我有一个形状数据集(2600,95),前55列是特征,40列是标签。
标签是一个大小为10x4的二进制矩阵,它是扁平的,特征是实值数字,范围是(0.0009,0.6)。目标是用DNN预测这个向量。
以下是模型:
model = Sequential()
model.add(Dense(128, activation='tanh', input_shape=(55,)))
model.add(Dense(64, activation='tanh'))
model.add(Dense(40, activation='sigmoid'))
optimizer = keras.optimizers.Adam(learning_rate=0.001)
model.compile(loss='binary_crossentropy',
optimizer=optimizer,
metrics=['accuracy'])
history = model.fit(X_train, y_train,epochs=50, batch_size=4,validation_data=(X_test, y_test), verbose=1)但结果并不令人满意

几个问题:
我是在为问题建模吗?
我应该使用什么样的架构?
什么损失函数更有意义?
我还应该考虑什么?
发布于 2021-10-01 15:10:13
一般来说,我不认为你的方法有什么大问题。不过,你可以做一些修改。
首先,您可能需要缩放您的数据。您可以使用0-1缩放或-1,1,应该没有多大关系。当然,每一列都需要单独缩放。我假设你的列之间没有关系,如果有一个特定的结构,你最好在完全连接的层之前使用卷积: CNN不仅用于图像,还可以提取任何类型的具有“特征”的数据。但是,如果不知道列的具体情况,就不可能说出任何话。
我还建议你在你的模型中包括辍学层。您说您尝试过ReLU,但是您可能希望在缩放和添加退出后再次检查。同时也给了ReLU的其他变体一个机会: leakyReLU,ELU,SiLU等。
最后,确保您的模型没有比您的数据具有更多的可训练参数。在我看来,你的模型太大了,不适合你的数据。您可以使用model.summary()来获取参数的计数。
https://datascience.stackexchange.com/questions/102691
复制相似问题