Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow:使用GPU的列车Keras模型_Python_Tensorflow_Keras_Gpu - Fatal编程技术网

Python Tensorflow:使用GPU的列车Keras模型

Python Tensorflow:使用GPU的列车Keras模型,python,tensorflow,keras,gpu,Python,Tensorflow,Keras,Gpu,我知道,有很多相关的问题,但它们已经过时了,大部分问题甚至是关于TensorFlow 1的 我有1个GPU(GeForce 960),这是TensorFlow认可的,因此安装成功 我不确定这是否是正确的方法,但我就是这样训练Keras模型的: def create_model(): model = Sequential() model.add(Conv2D(128, (3,3), padding="valid")) model.add(layers.BatchNo

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

我有1个GPU(GeForce 960),这是TensorFlow认可的,因此安装成功

我不确定这是否是正确的方法,但我就是这样训练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)

但我遇到了很多问题:

  • 当我关闭策略部分时,完全相同的代码同样快
  • 我总是收到这样的“警告”:
    BaseCollectiveExecutor::startPort超出范围:序列结束
  • 我发现,当我在另一个没有GPU支持(CUDA等)的Anaconda环境中运行这段代码时,在策略部分关闭的情况下,它的速度要慢得多。那么,当您处于支持GPU的环境中时,GPU是否会自动使用(因为,如1所述,没有策略部分,GPU的速度同样快)
  • 这是使用我的GPU的正确方法吗?如果没有,正确的方法是什么

  • 是的,GPU在支持和可用的情况下会自动使用,不需要策略,但当我在colab使用TPU进行培训时,我确实需要策略。那是另一回事,对吗?有没有办法检查是否使用了GPU?TPU培训与GPU培训完全不同。对于GPU,在任务开始时,tensorflow应该提示如下内容:创建的tensorflow设备(/job:localhost/replica:0/task:0/device:GPU:0,内存为****MB)->物理GPU(设备:0,名称:****,pci总线id:***),您应该看到所有CUDA、CuDNN库都打开了。您还可以使用watch-nvidiasmi命令检查您的GPU使用情况(如果您使用的是nvidia)。