В настоящее время я запускаю простой скрипт для обучения набора данных mnist
.
Выполнение обучения через мой ЦП через Tensorflow дает мне 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)
Я вижу, как мой ЦП запускается для теста ЦП, и мой ГП максимально загружается для теста ГП, но я очень озадачен тем, почему ЦП не выполняет ГП с коэффициентом 5.
Должны ли это быть ожидаемые результаты?
Что-то не так в моем коде?