首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高TensorFlow CNN测试精度

提高TensorFlow CNN测试精度
EN

Data Science用户
提问于 2018-04-25 16:33:50
回答 1查看 1.5K关注 0票数 1

我想用Tensorflow进行信号分类。这些信号要么是正常信号,要么是高危信号。为此,我使用了卷积神经网络。信号长度为685,结构为:

  • 卷积层有27个通道,1×16窗口大小和步长1。
  • 最大池层,1乘2窗口大小和跨距2。
  • 卷积层有14个通道,1乘32窗口大小和步长1。
  • 最大池层,1乘2窗口大小和跨距2。
  • 卷积层,4通道,1乘32窗口大小和步长1。
  • 最大池层,1乘2窗口大小和跨距2。
  • 卷积层,3通道,1×10窗口大小和步长1。
  • 最大池层,1乘2窗口大小和跨距2。
  • 完全连接层,20个神经元和脱落层。
  • 完全连接层,10个神经元和脱落层。
  • 最后是软最大层。

使用AdamOptimizer对网络进行150000个信号的学习率为0.001的网络训练后,训练准确率接近95 %(采用16批大小的批量训练),而使用20000个新信号的测试精度接近50 %。由于只有两个类别,这种准确性并不比随机猜测更好。

代码语言:javascript
复制
model="conv1d-27-16-1,maxpool-2,conv1d-14-32-1,maxpool-2,conv1d-4-32-1,maxpool-2,conv1d-3-10-1,maxpool-2,full-20,full-10,softmax"

cnn=CNN_1D(model,input_size=685,n_classes=2,num_epochs=20,batch_size=16,dropout=0.75)
cnn.read_data('train_input','train_targets','test_input','test_targets')
cnn.build_model()
cnn.training(validation_set='all')

如何提高网络测试的准确性?

EN

回答 1

Data Science用户

回答已采纳

发布于 2018-04-25 20:04:27

这显然是过度拟合的情况,因为您的验证错误远远大于您的培训错误。了解到过度适应是你的问题后,有很多方法可以解决这个问题:

我能看到你已经在做辍学了,所以把辍学率定得更高会有帮助。此外,您还可以尝试在更多的层中使用下拉列表,而不仅仅是最后两个层。如果将辍学率设置得更高,并使用辍学设置更多的层,那么这可能意味着您的培训和验证数据不来自相同的分布。您可以研究培训数据的统计属性以及验证和研究,如果它们来自相同的分布。

额外注释:如果只有两个类,为什么不在最后一层中使用sigmoid激活函数?

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/30834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档