嗨,我的代码过去一直运行良好,直到我更改了数据集。现在,我在:
model.fit(train,train_df.iloc[:,-1],epochs=30, batch_size=20, verbose=1)
错误是:
ValueError:检查输入时出错:预期density_31_input具有 形状(1125,),但数组的形状为(103,)
变量为:
scaler = StandardScaler()
train=scaler.fit_transform(train_df.iloc[:,:-1])
test=scaler.fit_transform(test_df.iloc[:,:-1])
# Creating Deep Model
model = Sequential()
# Add an input layer
model.add(Dense(562, activation='relu', input_shape=(1125,)))
# Add one hidden layer
model.add(Dense(562, activation='relu'))
model.add(BatchNormalization())
# Add an output layer
model.add(Dense(1, activation='sigmoid'))
#add improvements
model.add(Dropout(0.3))
#Train the model
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(train,train_df.iloc[:,-1],epochs=30, batch_size=20, verbose=1)
#TEst the model
y_pred = model.predict(test_df.iloc[:,:-1])
我认为要修复它。我需要更改batch_size和纪元吗?但是应该使用什么数字?
答案 0 :(得分:1)
通常,模型假定输入数据的第一维为批处理大小。模型不在乎批处理大小,因此在创建模型时永远不要设置它。相反,您应该将input_shape
设置为输入数据的每个样本的形状。在您的情况下,每个样本似乎都是长度为103的向量,因此请将input_shape
设置为(103,)
。