Keras分子活性模型

2024-06-16 11:22:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在试验Merku分子活性挑战,我已经创建了训练和测试数据集

数据的形状如下:

x_train.shape=(1452, 4306)
y_train.shape=(1452, 1) 
x_test.shape=(363, 4306)
y_test.shape=(363, 1)

我使用了Dense层来定义模型,如下所示:

model = Sequential()
model.add(Dense(100, activation="relu",  input_shape=(4306,)))
model.add(Dense(50, activation="relu"))
model.add(Dense(25, activation="relu"))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(1))

# Compile the model
model.compile(
    loss='categorical_crossentropy',
    optimizer="adam",
)
model.summary()
# Train the model
model.fit(
    x_train,
    y_train,
    batch_size=300,
    epochs=900,
    validation_data=(x_test, y_test),
    shuffle=True
)

尝试上述代码时,出现以下错误:

ValueError: Input 0 is incompatible with layer flatten_23: expected min_ndim=3, found ndim=2

如何解决此错误


Tags: thetestaddmodel错误trainactivation分子
1条回答
网友
1楼 · 发布于 2024-06-16 11:22:01

只需去除平坦层:

model = Sequential()
model.add(Dense(100, activation="relu",  input_shape=(4306,)))
model.add(Dense(50, activation="relu"))
model.add(Dense(25, activation="relu"))
model.add(Dropout(0.25))
model.add(Dense(1))

发送到连续层的数据基本上是一维的(忽略批处理列),因此没有什么可展平的。进入展平层的数据已经是1D了

为回归编辑:

分类交叉熵不是回归的合适成本函数,您需要使用均方误差,这通常用于所有回归任务:

model.compile(
    loss='mse',
    optimizer="adam",
)

相关问题 更多 >