我还在学习如何实现tflearn网络,所以请耐心等待。我从这里尝试了tflearn示例代码:https://github.com/tflearn/tflearn/blob/master/examples/images/convnet_cifar10.py
但奇怪的是,损失从未下降,在整个训练过程中,我看到的所有验证准确率都是10% (相当于此数据集的随机精度)。
然而,仅注释掉2D卷积和最大池化操作,验证精度在前10个时期跃升至0.47的验证精度。
这是修改后的代码,看起来效果更好。代码的其余部分与上面的链接相同
network = input_data(shape=[None, 32, 32, 3],
data_preprocessing=img_prep,
data_augmentation=img_aug)
#network = conv_2d(network, 32, 3, activation='relu')
#network = max_pool_2d(network, 2)
#network = conv_2d(network, 64, 3, activation='relu')
#network = conv_2d(network, 64, 3, activation='relu')
#network = max_pool_2d(network, 2)
network = fully_connected(network, 512, activation='relu')
network = dropout(network, 0.5)
network = fully_connected(network, 10, activation='softmax')
network = regression(network, optimizer='adam',
loss='categorical_crossentropy',
learning_rate=0.001)
我只是有点担心和困惑的是,tflearn网站上给出的示例实现在实现2D卷积步骤时会产生随机分类。其他人以前见过这个吗?或者有人可以帮助我直观地理解为什么会发生这种情况?或者这是潜入conv_2d代码的静默bug的症状?
发布于 2016-08-15 13:33:45
事实证明,CUDA或CudNN库中存在错误。如果我在运行脚本之前关闭GPU计算,损失就会减少,验证准确率就会立即提高。
export CUDA_VISIBLE_DEVICES=''
python .....
https://stackoverflow.com/questions/38885226
复制相似问题