GPUでTensorFlowを正常にインストールしました。次のスクリプトを実行すると、この結果が得られます。
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
C:\ tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:140]
お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていないという命令をサポートしています:AVX2 2018-03-26
プロパティを持つデバイス0が見つかりました:名前:GeForce GTX 970メジャー:5マイナー:2 memoryClockRate(GHz):1.253 pciBusID:0000:01:00.0 totalMemory:4.00GiB freeMemory:3.31GiB 2018-03-26 11: 47:03.186046:IC:\ tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\common_runtime\gpu\gpu_device.cc:1312]
表示可能なGPUデバイスの追加:0 2018-03-26 11:47:04.062049:IC:\ tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\common_runtime\gpu\gpu_device.cc:993]
TensorFlowデバイスの作成(/ device:GPU:0と3043 MBメモリ)->物理GPU(デバイス:0、名前:GeForce GTX 970、pciバスID:0000:01:00.0、計算機能:5.2) [名前: "/ device:CPU:0" device_type: "CPU" memory_limit:268435456 locality {} incarnation:8082333747214375667、名前: "/ device:GPU:0" device_type: "GPU" memory_limit:3190865920 locality {bus_id:1}化身:1190887510488091263 physical_device_desc: "デバイス:0、名前:GeForce GTX 970、PCIバスID:0000:01:00.0、計算能力:5.2"]
たとえば、KerasでCNNを実行すると、GPUが自動的に使用されますか?または、KerasにGPUの使用を強制するコードを記述する必要がありますか?
たとえば、MNISTデータセットでは、GPUをどのように使用しますか?
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
activation='relu',
input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(x_test, y_test))
GPUを使用するようにKerasに明示的に指示する必要はありません。 GPUが使用可能な場合(そして、出力からはそのことがわかります)、それが使用されます。
また、モデルトレーニング中のGPUの使用状況を見て、これを経験的に確認することもできます。Windows10を使用している場合は、タスクマネージャーを開いて[パフォーマンス]タブを見るだけで済みます( ここを参照 )。