以下是模型:
model.add(LSTM(24, input_shape=(120,26), return_sequences = True, activation = 'relu'))
model.add(convolutional.Conv1D(filters = 1, kernel_size=120,activation ='relu'))
model.add(Dense(1))
model.add(Activation('sigmoid'))
opt1 = keras.optimizers.RMSprop(lr=0.0001, rho=0.9, epsilon=1e-08, decay=0.0)
model.compile(loss='binary_crossentropy', optimizer=opt1, metrics=['accuracy'])
filepath="model_check-{epoch:02d}-{loss:.4f}.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='loss', verbose=1,
save_best_only=True, mode='min')
callbacks_list = [checkpoint]
model.fit(df_matrix3, y_matrix3, epochs=2000, batch_size=10000, verbose=2)
以下是输入的维度:
df_matrix3 = [0]*10000
df_matrix3t= [0]*10000
for x in range(10000):
df_matrix3[x]=df_matrix[:,0+x:120+x,:]
df_matrix3t[x] = df_matrix[:,1740000+x:1740120+x,:]
df_matrix3 = np.reshape(df_matrix3,(10000,120,26))
y_matrix3 = y[0:10000]
y_matrix3t = y[1740000:1750000]
y_matrix3t = np.reshape(y_matrix3t,(10000,1))
y_matrix3 = np.reshape(y_matrix3,(-1,10000,1))
y_matrix3c = y[1740000:1750000]
这是我得到的错误:
ValueError:检查目标时出错:预期activation_15具有形状(无,1,1)但是具有形状(1,10000,1)的数组
这个错误对我来说没有多大意义,因为当我将LSTM本身作为10,000个批次运行时,它运行正常(尽管返回Sequences设置为False)。从那时起我所做的就是在第一层中添加一个CNN图层集返回序列= True,输出应该仍然是每个输入1个项目,我希望它是1,10000,1个数组。然而,它正在寻找其他东西,我不知道为什么。
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_15 (LSTM) (None, 120, 24) 4896
_________________________________________________________________
conv1d_14 (Conv1D) (None, 1, 1) 2881
_________________________________________________________________
dense_14 (Dense) (None, 1, 1) 2
_________________________________________________________________
activation_14 (Activation) (None, 1, 1) 0
=================================================================
Total params: 7,779
Trainable params: 7,779
这些是我的图层尺寸,与我期望的一致。
答案 0 :(得分:0)
批量大小始终是第一个维度。
你应该真的期待(10000,1,1)
。
那是(None,1,1)
- 唯一的自由维度是第一个,即批量大小。