增加 tflearn 中的损失 (CNN)
Increasing loss in tflearn (CNN)
我正在尝试训练分类器以从原始音频频谱中区分歌曲流派。为此,我在 tflearn 中使用了深度卷积网络。但是,网络不会converge/learn/the损失越来越大。如果有人知道为什么会这样,我将不胜感激。
我使用的数据是频谱图的 128x128 灰度图像,分为古典音乐(500 个示例)和硬摇滚(500 个示例),1-hot 编码。
示例如下:
Classical extract
我可以说出两者之间的区别 类(由于 Whosebug 的限制,我无法显示),我怀疑深度 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)
非常感谢您的帮助!
我通常会尝试的几件事是:
较低的学习率
尝试另一个激活
暂时删除掉落
HTH
我正在尝试训练分类器以从原始音频频谱中区分歌曲流派。为此,我在 tflearn 中使用了深度卷积网络。但是,网络不会converge/learn/the损失越来越大。如果有人知道为什么会这样,我将不胜感激。
我使用的数据是频谱图的 128x128 灰度图像,分为古典音乐(500 个示例)和硬摇滚(500 个示例),1-hot 编码。
示例如下:
Classical extract
我可以说出两者之间的区别 类(由于 Whosebug 的限制,我无法显示),我怀疑深度 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)
非常感谢您的帮助!
我通常会尝试的几件事是:
较低的学习率
尝试另一个激活
暂时删除掉落
HTH