如何在不使用输入的情况下定义输入形状?
How do you define input shape without using your input?
我正在训练以弄清楚如何在模型创建过程中不使用 X_train
来定义我的训练数据的输入形状。我知道 LSTM
网络只接受 3D 数组作为输入,我的数据是用这个 for 循环准备的
X_train = []
y_train = []
for i in range(10, 400):
X_train.append(training_set_scaled[i-10:i, 0])
y_train.append(training_set_scaled[i, 0])
X_train, y_train = np.array(X_train), np.array(y_train)
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
下面是我正在使用的模型。
model = Sequential()
model.add(LSTM(units = 100, return_sequences = True, input_shape = (X_train.shape[1], 1)))
model.add(Dropout(0.2))
model.add(LSTM(units=1000 , return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=1000 , return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=100))
model.add(Dropout(0.2))
model.add(Dense(units=1 ))
model.compile(optimizer=opt, loss='mean_squared_error' , metrics=[tf.keras.metrics.RootMeanSquaredError()])
如您所见,第一个 LSTM
层在输入形状中包含 X_train 是否有任何方法可以在不使用 X_train 的情况下定义输入形状,它知道它需要使用 X_train 进行训练,因为我们有 model.fit
将 X_train
作为其参数之一
如果我执行以下操作,我的模型不会以相同的方式训练
model = Sequential()
model.add(LSTM(units = 100, return_sequences = True))
model.add(Dropout(0.2))
model.add(LSTM(units=1000 , return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=1000 , return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=100))
model.add(Dropout(0.2))
model.add(Dense(units=1 ))
model.compile(optimizer=opt, loss='mean_squared_error' , metrics=[tf.keras.metrics.RootMeanSquaredError()])
您是否尝试过使用 None 而不是 X_train?像这样?
model.add(LSTM(units = 100, return_sequences = True, input_shape = (None , 1)))
我正在训练以弄清楚如何在模型创建过程中不使用 X_train
来定义我的训练数据的输入形状。我知道 LSTM
网络只接受 3D 数组作为输入,我的数据是用这个 for 循环准备的
X_train = []
y_train = []
for i in range(10, 400):
X_train.append(training_set_scaled[i-10:i, 0])
y_train.append(training_set_scaled[i, 0])
X_train, y_train = np.array(X_train), np.array(y_train)
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
下面是我正在使用的模型。
model = Sequential()
model.add(LSTM(units = 100, return_sequences = True, input_shape = (X_train.shape[1], 1)))
model.add(Dropout(0.2))
model.add(LSTM(units=1000 , return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=1000 , return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=100))
model.add(Dropout(0.2))
model.add(Dense(units=1 ))
model.compile(optimizer=opt, loss='mean_squared_error' , metrics=[tf.keras.metrics.RootMeanSquaredError()])
如您所见,第一个 LSTM
层在输入形状中包含 X_train 是否有任何方法可以在不使用 X_train 的情况下定义输入形状,它知道它需要使用 X_train 进行训练,因为我们有 model.fit
将 X_train
作为其参数之一
如果我执行以下操作,我的模型不会以相同的方式训练
model = Sequential()
model.add(LSTM(units = 100, return_sequences = True))
model.add(Dropout(0.2))
model.add(LSTM(units=1000 , return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=1000 , return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=100))
model.add(Dropout(0.2))
model.add(Dense(units=1 ))
model.compile(optimizer=opt, loss='mean_squared_error' , metrics=[tf.keras.metrics.RootMeanSquaredError()])
您是否尝试过使用 None 而不是 X_train?像这样?
model.add(LSTM(units = 100, return_sequences = True, input_shape = (None , 1)))