Не Удается Запустить Модель Keras На Графическом Процессоре С Помощью Plaidml

#python #machine-learning #keras #plaidml

#питон #машинное обучение #keras #plaidml

Вопрос:

Я хочу запустить эту модель Keras на своем графическом процессоре, но она работает на моем процессоре, Я использовал Plaidml для использования моего графического процессора AMD, plaidml правильно настроен и отлично работает на других моделях, я думаю, может быть, потому что я импортирую tensoflow, но я не уверен в этом, мне нужна модель для работы на графическом процессоре, у меня есть другие модели, которые не импортируют tensorflow, который отлично работает с Plaidml

исходный код

 import numpy as np  from os import environ environ["KERAS_BACKEND"] = "plaidml.keras.backend" import keras from keras.layers import Dense   import numpy as np import pandas as pd from matplotlib import pyplot as plt from tensorflow import keras from tensorflow.keras import layers   master_url_root = "https://raw.githubusercontent.com/numenta/NAB/master/data/"  df_small_noise_url_suffix = "artificialNoAnomaly/art_daily_small_noise.csv" df_small_noise_url = master_url_root   df_small_noise_url_suffix df_small_noise = pd.read_csv(  df_small_noise_url, parse_dates=True, index_col="timestamp" )  df_daily_jumpsup_url_suffix = "artificialWithAnomaly/art_daily_jumpsup.csv" df_daily_jumpsup_url = master_url_root   df_daily_jumpsup_url_suffix df_daily_jumpsup = pd.read_csv(  df_daily_jumpsup_url, parse_dates=True, index_col="timestamp" )    fig, ax = plt.subplots() df_small_noise.plot(legend=False, ax=ax) plt.show()    training_mean = df_small_noise.mean() training_std = df_small_noise.std() df_training_value = (df_small_noise - training_mean) / training_std print("Number of training samples:", len(df_training_value))     TIME_STEPS = 288  # Generated training sequences for use in the model. def create_sequences(values, time_steps=TIME_STEPS):  output = []  for i in range(len(values) - time_steps   1):  output.append(values[i : (i   time_steps)])  return np.stack(output)   x_train = create_sequences(df_training_value.values) print("Training input shape: ", x_train.shape)    model = keras.Sequential(  [  layers.Input(shape=(x_train.shape[1], x_train.shape[2])),  layers.Conv1D(  filters=32, kernel_size=7, padding="same", strides=2, activation="relu"  ),  layers.Dropout(rate=0.2),  layers.Conv1D(  filters=16, kernel_size=7, padding="same", strides=2, activation="relu"  ),  layers.Conv1DTranspose(  filters=16, kernel_size=7, padding="same", strides=2, activation="relu"  ),  layers.Dropout(rate=0.2),  layers.Conv1DTranspose(  filters=32, kernel_size=7, padding="same", strides=2, activation="relu"  ),  layers.Conv1DTranspose(filters=1, kernel_size=7, padding="same"),  ] ) model.compile(optimizer=keras.optimizers.Adam(learning_rate=0.001), loss="mse") model.summary()   history = model.fit(  x_train,  x_train,  epochs=50,  batch_size=128,  validation_split=0.1,  callbacks=[  keras.callbacks.EarlyStopping(monitor="val_loss", patience=5, mode="min")  ], )  plt.plot(history.history["loss"], label="Training Loss") plt.plot(history.history["val_loss"], label="Validation Loss") plt.legend() plt.show()  

Это изображение моего диспетчера задач (Plaidml настроен для работы на GPU 0 [он работает с другими исходными кодами])

Графический процессор не используется, и модель работает на процессоре

Ответ №1:

Вместо использования tensorflow keras попробуйте импортировать keras из keras.

 import keras  from keras import layers  

У вас все равно должен быть доступ ко всем одним и тем же слоям, моделям и т. Д. Возможно, вам потребуется установить keras без использования tensorflow с помощью

 pip install keras  

Также посмотрите на использование памяти GPU. Он должен подскочить, так как на нем хранятся данные. В plaidml большинство вычислений фактически не выполняются на графическом процессоре, но веса и данные хранятся на нем.

Кроме того, возможно, используйте следующий блок кода вместо ваших текущих первых строк.

 import numpy as np  import plaidml.keras  import os  plaidml.keras.install_backend()