【问题标题】:How to use convolution 1D with lstm ?如何将卷积 1D 与 lstm 一起使用?
【发布时间】:2018-05-09 20:01:02
【问题描述】:

我有时间序列数据通过单独的最后 6 个值输入 72 个值用于测试预测。我想将 CONV1D 与 LSTM 一起使用。

这是我的代码。

df = pd.read_csv('D://data.csv',
             engine='python')

df['DATE_'] = pd.to_datetime(df['DATE_']) + MonthEnd(1)
df = df.set_index('DATE_')
df.head()

split_date = pd.Timestamp('03-01-2015')

train = df.loc[:split_date, ['COLUMN3DATA']]
test = df.loc[split_date:, ['COLUMN3DATA']]

sc = MinMaxScaler()

train_sc = sc.fit_transform(train)
test_sc = sc.transform(test)

X_train = train_sc[:-1]
y_train = train_sc[1:]

X_test = test_sc[:-1]
y_test = test_sc[1:]

###################  Convolution  #######################

X_train_t = X_train[None,:]
print(X_train_t.shape)
X_test_t = X_test[:, None]

K.clear_session()
model = Sequential()

model.add(Conv1D(6, 3, activation='relu', input_shape=(12,1)))
model.add(LSTM(6, input_shape=(1,3), return_sequences=True))
model.add(LSTM(3))
model.add(Dense(1))

model.compile(loss='mean_squared_error', optimizer='adam' )

model.summary()

model.fit(X_train_t, y_train, epochs=400, batch_size=10, verbose=1)

y_pred = model.predict(X_test_t)

当我运行它时显示这样的错误

ValueError: Error when checking input: expected conv1d_1_input to have shape (None, 12, 1) but got array with shape (1, 64, 1)

如何在 lstm 中使用 conv1D

【问题讨论】:

    标签: tensorflow keras lstm rnn convolutional-neural-network


    【解决方案1】:

    问题在于您的输入数据和您的输入形状之间。

    • 你在模型中说你的输入形状是(12,1) (= batch_shape=(None,12,1))
    • 但是您的数据X_train_t 的形状为(1,64,1)

    要么修复模型的输入形状,要么修复数据(如果这不是预期的形状)。

    对于可变长度/时间步长,您可以使用input_shape=(None,1)

    第二层不需要 input_shape。

    【讨论】:

    • 我将模型更改为 Conv1D(1, 1, activation='relu', input_shape=(None,1)))。它没有错误。如果我使用 Conv1D(6, 3, It show error InvalidArgumentError (see above for traceback): computed output size will be positive. 为什么我不能将内核大小设置为 3?
    • 您需要长度 >= 3 的东西才能使内核大小 = 3。您是否更改了输入数据?
    • 你在你的keras配置文件中使用channels_first吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2014-05-18
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 2023-02-04
    相关资源
    最近更新 更多