tflearn(CNN)的损失增加[关闭]

Posted

技术标签:

【中文标题】tflearn(CNN)的损失增加[关闭]【英文标题】:Increasing loss in tflearn (CNN) [closed] 【发布时间】:2017-03-25 20:58:48 【问题描述】:

我正在尝试训练一个分类器来区分歌曲流派和原始音频频谱。为此,我在 tflearn 中使用了深度卷积网络。但是,网络不会收敛/学习/损失正在增加。如果有人知道为什么会这样,我将不胜感激。

我使用的数据是频谱图的 128x128 灰度图像,分类为古典音乐(500 个示例)和硬摇滚(500 个示例),1-hot 编码。

示例如下:

Classical extract

我可以分辨出这两个类之间的区别(由于 *** 的限制,我无法展示它),我怀疑深度 CNN 根本无法对它们进行分类。

这是我的损失:

Loss plot in tflearn

我在 tflearn 中为模型使用的代码如下:

convnet = input_data(shape=[None, 128, 128, 1], name='input')

convnet = conv_2d(convnet, 64, 2, activation='elu', weights_init="Xavier")
convnet = max_pool_2d(convnet, 2)

convnet = conv_2d(convnet, 32, 2, activation='elu', weights_init="Xavier")
convnet = max_pool_2d(convnet, 2)

convnet = conv_2d(convnet, 128, 2, activation='elu', weights_init="Xavier")
convnet = max_pool_2d(convnet, 2)

convnet = conv_2d(convnet, 64, 2, activation='elu', weights_init="Xavier")
convnet = max_pool_2d(convnet, 2)

convnet = fully_connected(convnet, 1024, activation='elu')
convnet = dropout(convnet, 0.5)

convnet = fully_connected(convnet, 2, activation='softmax')
convnet = regression(convnet, optimizer='rmsprop', learning_rate=0.01, loss='categorical_crossentropy', name='targets')

model = tflearn.DNN(convnet)

model.fit('input': train_X, 'targets': train_y, n_epoch=100, batch_size=64, shuffle=True, validation_set=('input': test_X, 'targets': test_y), 
    snapshot_step=100, show_metric=True)

非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

我通常会尝试的几件事是:

学习率较低

尝试另一次激活

暂时移除辍学

HTH

【讨论】:

谢谢,试试这些! 将学习率降低了十倍,现在正在收敛……我觉得自己像个白痴。猜猜那句老话“保持冷静,降低学习率”是真的。非常感谢! 没问题,乐于助人!请将此答案或解决您问题的其他答案标记为“已接受”。

以上是关于tflearn(CNN)的损失增加[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Keras weighted_metrics 在计算中不包括样本权重[关闭]

如何解释损失和准确性的增加

验证损失减少,然后增加,然后再次减少

如何在Keras中使用fit_generator()来加权? [关闭]

培训减少,验证 - 增加。培训损失,验证损失减少

为啥损失减少而准确率却没有增加? PyTorch