Итак, у меня есть две рамки данных, которые я использую в модели GRU. Мне пришлось изменить их, чтобы применить его, но в конце кода я хотел построить y_predicted с y_test. Это работает, но то, что раньше было осью X, теперь является осью Y, и наоборот. Я думал, что это потому, что данные были изменены, поэтому я применил .reshape(1,-1)
, но каждый раз, когда я делаю это, у меня заканчивается память (25 ГБ), и я действительно не знаю, как решить эту проблему
РЕДАКТИРОВАТЬ: Так что я не все, используя примеры данных, и обнаружил, что изменение формы y_predict не занимает памяти вообще. но эта строка почему-то использует все 25 ГБ памяти y_test = y_scale.inverse_transform(y_test)
import pandas as pd
import tensorflow as tf
from keras.layers.core import Dense
from keras.layers.recurrent import GRU
from keras.models import Sequential
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from tensorboardcolab import tensorboard
# Loading First Dataframe
df = pd.read_csv('IF 10 PERCENT.csv',index_col=None)
df2 = pd.read_csv('2019 10minutes IF 10 PERCENT.csv',index_col=None)
tbc=TensorBoardColab() # Tensorboard
X_train= df[['WindSpeed_mps','AmbTemp_DegC','RotorSpeed_rpm','RotorSpeedAve','NacelleOrientation_Deg','MeasuredYawError','Pitch_Deg','WindSpeed1','WindSpeed2','WindSpeed3','GeneratorTemperature_DegC','GearBoxTemperature_DegC']]
X_train=X_train.values
y_train= df['Power_kW']
y_train=y_train.values
X_test= df2[['WindSpeed_mps','AmbTemp_DegC','RotorSpeed_rpm','RotorSpeedAve','NacelleOrientation_Deg','MeasuredYawError','Pitch_Deg','WindSpeed1','WindSpeed2','WindSpeed3','GeneratorTemperature_DegC','GearBoxTemperature_DegC']]
X_test=X_test.values
y_test= df2['Power_kW']
y_test=y_test.values
# conversion to numpy array
# scaling values for model
x_scale = MinMaxScaler()
y_scale = MinMaxScaler()
X_train= x_scale.fit_transform(X_train)
y_train= y_scale.fit_transform(y_train.reshape(-1,1))
X_test= x_scale.fit_transform(X_test)
y_test= y_scale.fit_transform(y_test.reshape(-1,1))
X_train = X_train.reshape((-1,1,12))
X_test = X_test.reshape((-1,1,12))
# splitting train and test
# creating model using Keras
model = Sequential()
model.add(GRU(units=512, return_sequences=True, input_shape=(1,12)))
model.add(GRU(units=256, return_sequences=True))
model.add(GRU(units=256))
model.add(Dense(units=1, activation='sigmoid'))
model.compile(loss=['mse'], optimizer='adam',metrics=['mae'])
model.summary()
history=model.fit(X_train, y_train, batch_size=256, epochs=1, validation_data=(X_test,y_test),validation_split=0.1, verbose=1, callbacks=[TensorBoardColabCallback(tbc)])
score = model.evaluate(X_test, y_test)
print('Score: {}'.format(score))
y_predicted = model.predict(X_test)
y_predicted = y_scale.inverse_transform(y_predicted)
y_test = y_scale.inverse_transform(y_test)
plt.plot( y_predicted, label='Predicted')
plt.plot( y_test, label='Measurements')
plt.legend()
plt.show()
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()
Спасибо.