Tensorflow:使用GPU训练Keras模型

时间:2020-09-24 13:57:44

标签: python tensorflow keras gpu

我知道,有很多相关的问题,但是它们已经过时了,大部分甚至都在处理TensorFlow 1。

我有1个可被TensorFlow识别的GPU(GeForce 960),因此安装成功。

我不确定这是否是正确的方法,但这就是我训练Keras模型的方式:

def create_model():
  model = Sequential()
  model.add(Conv2D(128, (3,3), padding="valid"))
  model.add(layers.BatchNormalization())
  model.add(layers.Activation(activations.relu))
  model.add(MaxPooling2D(pool_size=(2,2)))
  model.add(Dropout(0.2))
  model.add(Flatten())
  model.add(layers.Dense(10, activation="softmax"))
  return model

strategy = tf.distribute.MirroredStrategy(devices=["/gpu:0"])

with strategy.scope():
  model = create_model()
  model.compile(loss="categorical_crossentropy",
                optimizer="adam",
                metrics=["acc"])

train_dataset, test_dataset = get_dataset()

model.fit(train_dataset,
          epochs=20,
          verbose=1,
          validation_data=test_dataset)

但是我遇到很多问题:

  1. 关闭“战略”部分时,完全相同的代码也同样快
  2. 我总是得到这个“警告”:BaseCollectiveExecutor::StartAbort Out of range: End of sequence
  3. 我发现,当我在不支持GPU(CUDA等)的另一个Anaconda环境中运行策略代码并关闭策略部分时,它的运行速度要慢得多。那么,当您处于GPU支持环境中时,是否会自动使用GPU(因为,如1.中所述,没有策略部分,它同样快)?
  4. 这是使用我的GPU的正确方法吗?如果没有,正确的方法是什么?

0 个答案:

没有答案