【发布时间】:2021-12-16 03:38:10
【问题描述】:
让我们考虑一下我要在其上执行 RNN 的随机数据集:
import random
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense, SimpleRNN
from keras.optimizers import SGD
import numpy as np
df_train = random.sample(range(1, 100), 50)
我想应用滞后等于 1 的 RNN。我将使用我自己的函数:
def create_dataset(dataset, lags):
dataX, dataY = [], []
for i in range(lags):
subdata = dataset[i:len(dataset) - lags + i]
dataX.append(subdata)
dataY.append(dataset[lags:len(dataset)])
return np.array(dataX), np.array(dataY)
根据滞后数缩小数据框。它输出两个 numpy 数组 - 第一个是自变量,第二个是因变量。
x_train, y_train = create_dataset(df_train, lags = 1)
但是现在当我尝试运行该函数时:
model = Sequential()
model.add(SimpleRNN(1, input_shape=(1, 1)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer=SGD(lr = 0.1))
history = model.fit(x_train, y_train, epochs=1000, batch_size=50, validation_split=0.2)
我得到错误:
ValueError: Error when checking input: expected simple_rnn_18_input to have 3 dimensions, but got array with shape (1, 49)
我已经阅读了它,解决方案就是应用重塑:
x_train = np.reshape(x_train, (x_train.shape[0], 1, x_train.shape[1]))
但是当我应用它时,我得到了错误:
ValueError: Error when checking input: expected simple_rnn_19_input to have shape (1, 1) but got array with shape (1, 49)
我不确定错误在哪里。你能告诉我我做错了什么吗?
【问题讨论】:
标签: python keras deep-learning neural-network recurrent-neural-network