我目前正在运行一个简单的脚本来训练mnist
数据集。
通过 Tensorflow 通过我的 CPU 运行训练给了我49us/sample
和使用以下代码的 3e 纪元:-
# CPU
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1)
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax))
model.compile(optimizer='adam', loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(x_train, y_train, epochs=3)
当我使用 AMD Pro 580 运行数据集时opencl_amd_radeon_pro_580_compute_engine
通过 plaidml 设置我得到以下结果249us/sample
使用 15 秒的纪元,使用以下代码:-
# GPU
import plaidml.keras
plaidml.keras.install_backend()
import keras
from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = keras.utils.normalize(x_train, axis=1)
x_test = keras.utils.normalize(x_test, axis=1)
model = keras.models.Sequential()
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(128, activation='relu'))
model.add(keras.layers.Dense(128, activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))
model.compile(optimizer='adam', loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(x_train, y_train, epochs=3)
我可以看到我的 CPU 在 CPU 测试中启动,而我的 GPU 在 GPU 测试中达到最大性能,但我很困惑为什么 CPU 的性能是 GPU 的 5 倍。
这应该是预期的结果吗?
我的代码中做错了什么吗?