Python 相同的Keras脚本在WSL(Ubuntu)中工作,但在Conda中不工作?

Python 相同的Keras脚本在WSL(Ubuntu)中工作,但在Conda中不工作?,python,tensorflow,keras,Python,Tensorflow,Keras,我正在训练CNN对图像进行分类,我有一个Keras脚本,它可以在CPU和GPU环境中成功运行,但是网络只能在CPU环境中学习。在GPU环境中,损耗在第一个历元之后减小,但在第一个历元之后保持不变。为什么? 使用Python3.6,我有一个运行在WSL(Ubuntu)中的tensorflow环境和一个运行在Conda中的tensorflow gpu环境。我尝试过不同的体系结构和不同的优化器,但不管GPU环境有什么问题 编辑:我创建了一个CPU conda环境,我也有同样的问题,所以这似乎是cond

我正在训练CNN对图像进行分类,我有一个Keras脚本,它可以在CPU和GPU环境中成功运行,但是网络只能在CPU环境中学习。在GPU环境中,损耗在第一个历元之后减小,但在第一个历元之后保持不变。为什么?

使用Python3.6,我有一个运行在WSL(Ubuntu)中的tensorflow环境和一个运行在Conda中的tensorflow gpu环境。我尝试过不同的体系结构和不同的优化器,但不管GPU环境有什么问题

编辑:我创建了一个CPU conda环境,我也有同样的问题,所以这似乎是conda与WSL的问题,而不是GPU与CPU的问题。此外,Conda在CPU上的时间周期是WSL中CPU时间周期的两倍

我注释掉了model.fit(),以减少冗长的输出

将numpy导入为np
导入tensorflow作为tf
从tensorflow.keras.layers导入输入、Conv2D、展平、密集、MaxPoolig2D
从tensorflow.keras.models导入模型
导入UTIL
(x_列,y_列),,(x_测试,y_测试)=最终负载数据(限值=36)
输入\图像=输入(形状=(256,256,3))
x=Conv2D(32,(3,3),padding='same',activation='relu')(输入图像)
x=Conv2D(32,(3,3),activation='relu')(x)
x=MaxPoolig2D()(x)
x=展平()(x)
x=密集(128,激活='relu')(x)
输出=密集(9,激活='softmax')(x)
模型=模型(输入=输入\图像,输出=输出)
compile(loss='classifical_crossentropy',optimizer='rmsprop',metrics=['acc'])
#模型拟合(x_序列,y_序列,历元=10,验证数据=(x_检验,y_检验))
对于范围(25)内的i:
打印(str(i)+':'+str(批量上的型号列(x列,y列)))
模型评估(x_列车、y_列车)
模型评估(x_检验,y_检验)
CPU培训结果:

0: [17.486359, 0.6875]
1: [61761.203, 0.28125]
2: [2228.4707, 0.71875]
3: [4440.558, 0.28125]
4: [1062.5581, 0.71875]
5: [481.29315, 0.71875]
6: [234.01581, 0.4375]
7: [170.98215, 0.71875]
8: [38.968575, 0.6875]
9: [8.086919, 0.75]
10: [5.7502546, 0.375]
11: [72.89319, 0.71875]
12: [13.203195, 0.6875]
13: [1.4184309, 0.875]
14: [9.258236, 0.46875]
15: [23.165062, 0.71875]
16: [8.963888, 0.78125]
17: [3.1053305, 0.84375]
18: [1.0664859, 0.96875]
19: [0.039992813, 1.0]
20: [0.023323938, 1.0]
21: [0.019487603, 1.0]
22: [0.01734325, 1.0]
23: [0.015670585, 1.0]
24: [0.014209943, 1.0]
32/32 [==============================] - 1s 19ms/sample - loss: 0.0129 - acc: 1.0000
4/4 [==============================] - 0s 20ms/sample - loss: 2.3463 - acc: 0.7500
0: [8.630159, 0.1875]
1: [4.5332146, 0.71875]
2: [4.5332146, 0.71875]
3: [4.5332146, 0.71875]
4: [4.5332146, 0.71875]
5: [4.5332146, 0.71875]
6: [4.5332146, 0.71875]
7: [4.5332146, 0.71875]
8: [4.5332146, 0.71875]
9: [4.5332146, 0.71875]
10: [4.5332146, 0.71875]
11: [4.5332146, 0.71875]
12: [4.5332146, 0.71875]
13: [4.5332146, 0.71875]
14: [4.5332146, 0.71875]
15: [4.5332146, 0.71875]
16: [4.5332146, 0.71875]
17: [4.5332146, 0.71875]
18: [4.5332146, 0.71875]
19: [4.5332146, 0.71875]
20: [4.5332146, 0.71875]
21: [4.5332146, 0.71875]
22: [4.5332146, 0.71875]
23: [4.5332146, 0.71875]
24: [4.5332146, 0.71875]
32/32 [==============================] - 0s 4ms/sample - loss: 4.5332 - acc: 0.7188
4/4 [==============================] - 0s 19ms/sample - loss: 4.0295 - acc: 0.7500
我希望看到与上述类似的东西,但我得到了一个奇怪的东西——GPU培训的结果:

0: [17.486359, 0.6875]
1: [61761.203, 0.28125]
2: [2228.4707, 0.71875]
3: [4440.558, 0.28125]
4: [1062.5581, 0.71875]
5: [481.29315, 0.71875]
6: [234.01581, 0.4375]
7: [170.98215, 0.71875]
8: [38.968575, 0.6875]
9: [8.086919, 0.75]
10: [5.7502546, 0.375]
11: [72.89319, 0.71875]
12: [13.203195, 0.6875]
13: [1.4184309, 0.875]
14: [9.258236, 0.46875]
15: [23.165062, 0.71875]
16: [8.963888, 0.78125]
17: [3.1053305, 0.84375]
18: [1.0664859, 0.96875]
19: [0.039992813, 1.0]
20: [0.023323938, 1.0]
21: [0.019487603, 1.0]
22: [0.01734325, 1.0]
23: [0.015670585, 1.0]
24: [0.014209943, 1.0]
32/32 [==============================] - 1s 19ms/sample - loss: 0.0129 - acc: 1.0000
4/4 [==============================] - 0s 20ms/sample - loss: 2.3463 - acc: 0.7500
0: [8.630159, 0.1875]
1: [4.5332146, 0.71875]
2: [4.5332146, 0.71875]
3: [4.5332146, 0.71875]
4: [4.5332146, 0.71875]
5: [4.5332146, 0.71875]
6: [4.5332146, 0.71875]
7: [4.5332146, 0.71875]
8: [4.5332146, 0.71875]
9: [4.5332146, 0.71875]
10: [4.5332146, 0.71875]
11: [4.5332146, 0.71875]
12: [4.5332146, 0.71875]
13: [4.5332146, 0.71875]
14: [4.5332146, 0.71875]
15: [4.5332146, 0.71875]
16: [4.5332146, 0.71875]
17: [4.5332146, 0.71875]
18: [4.5332146, 0.71875]
19: [4.5332146, 0.71875]
20: [4.5332146, 0.71875]
21: [4.5332146, 0.71875]
22: [4.5332146, 0.71875]
23: [4.5332146, 0.71875]
24: [4.5332146, 0.71875]
32/32 [==============================] - 0s 4ms/sample - loss: 4.5332 - acc: 0.7188
4/4 [==============================] - 0s 19ms/sample - loss: 4.0295 - acc: 0.7500

我迫不及待地想看看我犯了什么愚蠢的错误,哈哈,我不知道实际的问题是什么,但我知道从1.13.1更新tensorflow gpu修复了它


在conda shell中,我运行了
pip install tf nightly gpu
,现在网络按预期运行。我打赌我不必使用夜间构建,我可以只指定1.14.0(我在WSL中使用的tensorflow gpu构建),但不管怎样。

我希望我可以复制它。你有完全相同的代码和数据吗?相同的32个数据点?同样的分裂?(数据集是什么?@Mehdi完全相同的代码和数据。不过,我刚刚意识到的一点是,当使用CPU conda环境时,我会遇到同样的问题。所以这看起来像是康达vs WSL的问题,而不是CPU vs GPU的问题。@Mehdi这是ISIC挑战赛的训练集。我还注意到康达的训练速度是WSL的两倍。。。