我想在我的GPU上运行这个Keras模型,但是它运行在我的cpu上,我用Plaidml来使用我的
GPU,plaidml是正确设置的,它运行在其他的模型上--我想也许我是在导入tensoflow,但我不确定,我需要在GPU上运行这个模型,我有其他不导入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上运行,它工作在其他源代码上)

发布于 2021-12-22 22:24:07
不要使用tensorflow keras,尝试从keras中导入keras。
import keras
from keras import layers您仍然应该可以访问所有相同的层、模型等。您可能需要安装没有使用tensorflow的keras。
pip install keras还可以查看您的GPU内存使用情况。它应该跳起来,因为数据存储在上面。在plaidml中,大多数计算实际上不是在GPU上运行,而是将权重和数据存储在GPU上。
另外,可以使用下面的代码块来代替当前的第一行代码。
import numpy as np
import plaidml.keras
import os
plaidml.keras.install_backend()https://stackoverflow.com/questions/70231462
复制相似问题