V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xjtu001
V2EX  ›  程序员

机器学习相关的本科毕设遇到了一些问题,希望大佬解答

  •  
  •   xjtu001 · 2019-05-06 20:22:39 +08:00 · 2963 次点击
    这是一个创建于 2014 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本人本科不是计算机方向,但是研究生转到了这方面,就在学院里面选了一个机器学习相关的毕设项目。基本内容就是以离子电流信号作为输入,用 pytorch 搭建神经网络预测燃烧压力,当然这些都不重要。然后我们选了三种,一个隐藏层的 ANN,三个隐藏层的 DNN,然后就是 RNN。因为我自己水平有限,python 和 ptorch 全是现学现卖,基本就是跟着一个研究生学长,他写代码我学习,然后稍微修改交给他运行。最开始的时候,可能是 ANN 代码出现了问题,然后出现了偏差较大的结果。
    然后学长把 ANN 和 DNN 全部修改之后,把结果给我,我发现 DNN 效果还不如 ANN,就很懵逼 。问他他说可能是激活函数饱和了,说实话不太懂。然后他现在也没太多时间修改,调试,就让我用最开始错误的 ANN 结果,这样就能形成 ANN,DNN,RNN 效果越来越好的结果。但是现在很懵,还是想解决一下这个问题。
    不知道有没有大佬帮忙看一下代码,有哪里有问题,呜呜呜。
    代码地址: https://github.com/xjtu-cs-gao/pytorch_models
    14 条回复    2019-05-08 17:31:07 +08:00
    xjtu001
        1
    xjtu001  
    OP
       2019-05-06 20:23:10 +08:00
    第一次用 github 上传东西,不知道能不能打开哦
    xjtu001
        2
    xjtu001  
    OP
       2019-05-06 20:23:41 +08:00
    v2ex 竟然不能发图,有点懵,没法上传效果图
    ivechan
        3
    ivechan  
       2019-05-06 21:01:55 +08:00   ❤️ 3
    ANN 和 DNN 这个概念先纠正一下。
    ANN 应该是 artificial neural network,是比较广泛的概念,包含了 DNN。
    DNN 是 deep neural network,有时候也称为 MLP,一般与 CNN, RNN 做区分。

    你这里应该是三层网络( DNN )和单层网络(你说的 ANN )对比,
    建议你把 DNN 中的 dropout 和 BatchNorm 先去掉,特别是 dropout ( 0.5 )可能太激进了。
    另外注意下 Loss 曲线,三层比一层差可能有两个原因:
    1. 过拟合,少训练一点时间就可以解决
    2. 未拟合,建议增加时间,或者增加数据集。
    xychang
        4
    xychang  
       2019-05-06 21:08:32 +08:00 via Android
    你数据量多大啊?最后模型取的是第几个 epoch 的结果?
    xjtu001
        5
    xjtu001  
    OP
       2019-05-06 21:08:47 +08:00 via Android
    @ivechan 好的,谢谢老哥,我试一下
    ipwx
        6
    ipwx  
       2019-05-06 21:46:26 +08:00
    无脑上 BN 和 Dropout 的都是猛士。
    xjtu001
        7
    xjtu001  
    OP
       2019-05-06 21:48:28 +08:00 via Android
    @xychang 300 个 epoch 十几个工况,每一个工况有 67 样本
    xjtu001
        8
    xjtu001  
    OP
       2019-05-06 21:48:53 +08:00 via Android
    @ipwx emm。也不是我写的代码,这个东西具体做什么我都不知道
    loryyang
        9
    loryyang  
       2019-05-06 21:50:31 +08:00
    你的好和差到底是多少?至少要看到你的模型是欠拟合还是过拟合了,还是压根没有 work,然后相应地做调整
    xjtu001
        10
    xjtu001  
    OP
       2019-05-06 21:51:04 +08:00 via Android
    @loryyang github 上有个对比图
    longbye0
        11
    longbye0  
       2019-05-06 22:41:17 +08:00
    只看了下你写的 mlp。
    同#3,去掉 bn 和 dropout。
    看你输入输出应该是 721 维向量,自己度量下输入向量的相关性,判断下隐藏层该取小于 721 还是大于。
    取一个完整工况不做训练,来验证。
    usingnamespace
        12
    usingnamespace  
       2019-05-07 01:52:38 +08:00 via iPhone
    还好有人纠正了你的概念。。。
    jackOne
        13
    jackOne  
       2019-05-07 09:15:07 +08:00
    建议看下你模型训练过程中的训练损失曲线以及验证损失曲线,看模型是否 work 或者是过拟合
    xwhxbg
        14
    xwhxbg  
       2019-05-08 17:31:07 +08:00
    @ivechan 学习了,我一直以为 DNN 是 dense,RNN 是 recurrent,CNN 是 convolution
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2622 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:19 · PVG 13:19 · LAX 21:19 · JFK 00:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.