Thi*_*den 5 python spyder deep-learning keras tensorflow-gpu
我刚刚为gpu安装了tensorflow,并为我的CNN使用了keras。在训练期间,我的GPU仅使用了5%,但是在训练期间使用了6GB的vram中的5个。有时会出现故障,在控制台上打印0.000000e + 00,gpu降到100%,但几秒钟后,训练速度又降低到5%。我的GPU是Zotac gtx 1060 mini,我正在使用Ryzen 5 1600x。
Epoch 1/25
121/3860 [..............................] - ETA: 31:42 - loss: 3.0575 - acc: 0.0877 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00Epoch 2/25
121/3860 [..............................] - ETA: 29:48 - loss: 3.0005 - acc: 0.0994 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00Epoch 3/25
36/3860 [..............................] - ETA: 24:47 - loss: 2.9863 - acc: 0.1024
Run Code Online (Sandbox Code Playgroud)
lda*_*vid 11
通常,我们希望瓶颈在GPU上(因此利用率为100%)。如果这没有发生,则在每次批处理期间,代码的其他部分将花费很长时间。很难说这是什么(特别是因为您没有添加任何代码),但是您可以尝试以下操作:
1.输入数据
确保网络的输入数据始终可用。从磁盘读取图像需要很长时间,因此请使用多个workers和multiprocessing接口:
model.fit(..., use_multiprocessing=True, workers=8)
Run Code Online (Sandbox Code Playgroud)
2.强制模型进入GPU
这几乎不是问题,因为/gpu:0它是默认设备,但是有必要确保在目标设备中执行模型:
with tf.device('/gpu:0'):
x = Input(...)
y = Conv2D(..)
model = Model(x, y)
Run Code Online (Sandbox Code Playgroud)
2.检查型号的尺寸
如果批处理量很大并且允许软放置,则网络的某些部分(不适合GPU的内存)可能位于CPU处。这大大减慢了该过程。
如果启用了软放置,请尝试禁用并检查是否引发了内存错误:
# make sure soft-placement is off
tf_config = tf.ConfigProto(allow_soft_placement=False)
tf_config.gpu_options.allow_growth = True
s = tf.Session(config=tf_config)
K.set_session(s)
with tf.device(...):
...
model.fit(...)
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,请尝试减小批处理大小,直到合适为止,并为您提供良好的GPU使用率。然后再次打开软放置。