tflearn CNN 中的二维卷积破坏了 mnist 和 cifar-10 基准的学习
2d convolution in tflearn CNN trashes learning for mnist and cifar-10 benchmarks
我仍在学习如何实现 tflearn 网络,请耐心等待。我从这里尝试了 tflearn 示例代码:https://github.com/tflearn/tflearn/blob/master/examples/images/convnet_cifar10.py
奇怪的是,损失从未下降,在整个训练过程中,我看到的验证准确率为 10%(相当于此数据集的随机数)。
然而,仅注释掉 2D 卷积和最大池化操作,验证准确率在前 10 个 epoch 中跃升至 0.47 的验证准确率。
这是修改后的代码,看起来效果更好。其余代码同上link
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 代码的无声错误的症状?
事实证明,CUDA 或 CudNN 库中存在错误。如果我在 运行 脚本之前关闭 GPU 计算,损失会下降,验证准确性会立即上升。
export CUDA_VISIBLE_DEVICES=''
python .....
我仍在学习如何实现 tflearn 网络,请耐心等待。我从这里尝试了 tflearn 示例代码:https://github.com/tflearn/tflearn/blob/master/examples/images/convnet_cifar10.py
奇怪的是,损失从未下降,在整个训练过程中,我看到的验证准确率为 10%(相当于此数据集的随机数)。
然而,仅注释掉 2D 卷积和最大池化操作,验证准确率在前 10 个 epoch 中跃升至 0.47 的验证准确率。
这是修改后的代码,看起来效果更好。其余代码同上link
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 代码的无声错误的症状?
事实证明,CUDA 或 CudNN 库中存在错误。如果我在 运行 脚本之前关闭 GPU 计算,损失会下降,验证准确性会立即上升。
export CUDA_VISIBLE_DEVICES=''
python .....