我正在尝试 Build 一个模型来预测房屋的损坏 . 我正在使用Keras .
在'damage_grade'栏中预测5个值在1到5之间 . 数字越大,房屋可以获得的伤害越大 .
另外我想提一下我是Keras的初学者,这是我在Keras的第一个模特 . 我试图通过Keras documentation的帮助来做到这一点 .
我的代码是:
X_train = rtrain_df.drop("damage_grade", axis=1)
Y_train = rtrain_df["damage_grade"]
X_test = rtest_df.drop("building_id", axis=1).copy()
X_train.shape, Y_train.shape, X_test.shape
import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=46)) #there are 46 feature in my dataset to be trained
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, Y_train, epochs=20, batch_size=128)
尝试拟合模型时,会出现以下错误:
ValueError:检查目标时出错:期望dense_6有形状(10,)但得到的形状为数组(1,)
有大约60万条记录需要培训
1 回答
您的代码中存在一些错误:
你在最后一个Dense图层中给出了10 . 它必须等于要预测的值的数量,即5 .
您必须将Y_train转换为具有5个分类要素的分类数组('damage_grade',从0到4) .
以下是更正后的代码: