卷积神经网络CNN:一维信号输入

        时光荏苒,转眼间已经过去两个月了,这段日子大概是我研究生生涯中最忙碌的一段时光,从一个python小白,深度学习小白,到现在感觉自己总算摸到了深度学习的门槛,心中还是有一些欣慰和感慨,可能对于很多人来说,我的进度并没有那么快,但对我来说,这是一个质变的两个月,感谢忙碌的自己,上进的自己,永不放弃的自己。

        tensorflow对于新手来说确实不太友好,但既然选择了,就义无反顾。期间想过想要转kares,kares更高级的封装一直在诱惑着我。硬着头皮用tensorflow,遇到了很多奇奇怪怪的问题,遇到了这么多问题,我还是解决了,这种成就感是任何东西都比不上的。

        也不算自己搭的CNN,用的是CNN算是经典结构中最简单的一种LeNet-5。下面是学习CNN并迁移到自己项目上的过程。

        1、第一次接触CNN,在云课堂上看了吴恩达老师的讲解,大致了解了一下CNN中卷积层和池化层的原理,对CNN有了一个大致的印象,我觉得这个很重要,否则你都不知道你要用的是个什么东西,你如何去用?

       2、然后根据书上的例程,手敲了一遍mnist_CNN,数据集用的是手写数字mnist,了解了LeNet-5具体怎么实现,至少需要改变结构,也是知道怎么去改。

        3、然后就是长达一周的迁移,把mnist数据集换为自己的数据集,因为tensorflow卷积操作只支持四维张量,感觉在这个上面耗费了很长时间,现在想想这一周都在处理数据格式的问题,因为自己的数据集是一维的,所以数据就各种出错,暂且不表。

        4、程序跑通了,然后发现loss一直不变不下降,最后查找到输出都是很大的数字,而标签只是0和1,所以先进行归一化,然后发现全是0.999,根本没法分类,问题出在

tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=y_)

        这个函数的用法,因为我的分类是多分类,而且是混合类,而这个函数是排他的,就是只允许有一个1,

tf.nn.softmax_cross_entropy_with_logits(logits=y, labels=y_)

        替换为这个函数不用自己给y归一化,会自动给y进行softmax操作,可以说是很方便了。再与y_进行比较得到loss进行adam优化。train_accuracy可以达到0.9999。虽然validation_accuracy很低,但这只是开始嘛,跟选取的数据集也有关系。

        下面是我的程序,可以自行下载验证:

https://github.com/UltrasonicZ/CNN_LeNet-5_onedimension

        因为我的数据集比较大,有点大吧,trainx为6321*801,trainy为6321*321,我用的minbatch进行训练,所以内存占用也不算太高,但是valx也为6321*801,valy为6321*321,每次训练程序一跑,验证程序一跑,就能把12G的GPU占满。。。下一步肯定是要减少这种情况(扶额),下一步研究队列和多线程应该可以有效的解决这个GPU占用的问题。

  • 23
    点赞
  • 180
    收藏
    觉得还不错? 一键收藏
  • 53
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 53
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值