检查目标时出错:预期密集的形状为 (1,) 但得到的数组形状为 (15662,) maxpooling 作为第一层
Error when checking target: expected dense to have shape (1,) but got array with shape (15662,) maxpooling as a first layer
我正在尝试使用 keras 将最大池化作为第一层,但我遇到了输入和输出维度的问题。
print(x_train.shape)
print(y_train.shape)
(15662, 6)
(15662,)
x_train = np.reshape(x_train, (-1,15662, 6))
y_train = label_array.reshape(1, -1)
model = Sequential()
model.add(MaxPooling1D(pool_size = 2 , strides=1, input_shape = (15662,6)))
model.add(Dense(5, activation='relu'))
model.add(Flatten())
model.add(Dense(1, activation='softmax'))
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=
['accuracy'])
model.fit(x_train, y_train, batch_size= 32, epochs=1)
在 运行 模型之后,我得到以下错误:
ValueError: Error when checking target: expected dense_622 (last layer)
to have shape (1,) but got array with shape (15662,)
我正在做分类,我的目标是二进制 (0,1)
谢谢
您的目标应该具有 (batch_size, 1)
的形状,但您传递的是一个形状为 (1, 15662)
的数组。似乎 15662 应该是批量大小,在这种情况下 x_train
应该具有 (15662, 6)
的形状,y_train
应该具有 (15662, 1)
的形状。然而,在这种情况下,将 MaxPooling1D 层作为模型的第一层没有任何意义,因为最大池化需要 3D 输入(即形状 (batch_size, time_steps, features)
)。您可能想省略最大池化层(和 Flatten 层)。以下代码应该有效:
# x_train: (15662, 6)
# y_train: (15662,)
model = Sequential()
model.add(Dense(5, activation='relu', input_shape=(6,))) # Note: don't specify the batch size in input_shape
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=
['accuracy'])
model.fit(x_train, y_train, batch_size= 32, epochs=1)
但这当然取决于你有什么样的数据。
我正在尝试使用 keras 将最大池化作为第一层,但我遇到了输入和输出维度的问题。
print(x_train.shape)
print(y_train.shape)
(15662, 6)
(15662,)
x_train = np.reshape(x_train, (-1,15662, 6))
y_train = label_array.reshape(1, -1)
model = Sequential()
model.add(MaxPooling1D(pool_size = 2 , strides=1, input_shape = (15662,6)))
model.add(Dense(5, activation='relu'))
model.add(Flatten())
model.add(Dense(1, activation='softmax'))
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=
['accuracy'])
model.fit(x_train, y_train, batch_size= 32, epochs=1)
在 运行 模型之后,我得到以下错误:
ValueError: Error when checking target: expected dense_622 (last layer) to have shape (1,) but got array with shape (15662,)
我正在做分类,我的目标是二进制 (0,1) 谢谢
您的目标应该具有 (batch_size, 1)
的形状,但您传递的是一个形状为 (1, 15662)
的数组。似乎 15662 应该是批量大小,在这种情况下 x_train
应该具有 (15662, 6)
的形状,y_train
应该具有 (15662, 1)
的形状。然而,在这种情况下,将 MaxPooling1D 层作为模型的第一层没有任何意义,因为最大池化需要 3D 输入(即形状 (batch_size, time_steps, features)
)。您可能想省略最大池化层(和 Flatten 层)。以下代码应该有效:
# x_train: (15662, 6)
# y_train: (15662,)
model = Sequential()
model.add(Dense(5, activation='relu', input_shape=(6,))) # Note: don't specify the batch size in input_shape
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=
['accuracy'])
model.fit(x_train, y_train, batch_size= 32, epochs=1)
但这当然取决于你有什么样的数据。