我最初尝试过相同的方法并遇到与this SO questioner相同的错误。但是,使用接受的(并且只有)答案会给我另一个错误:“input_dim不是合法参数。”
然后我尝试在原始问题上使用解决方案(“将一个input_dim keyarg添加到KerasClassifier构造函数”),并再次得到相同的错误。我做错了什么,或者是否有新方法通过sklearn包装器KerasClassifier传递第一层的input_dim?
下面的最小代码示例:
from keras.models import Sequential
from keras.layers import Dense
from sklearn import datasets
from keras.wrappers.scikit_learn import KerasClassifier
import numpy as np
def create_model():
# create model
model = Sequential()
model.add(Dense(12, input_dim=4, init='uniform', activation='relu'))
model.add(Dense(6, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
#Error thrown here:
model = KerasClassifier(build_fn=create_model, input_dim=5, nb_epoch=150, batch_size=10, verbose=0)
ValueError:input_dim不是合法参数
答案 0 :(得分:4)
您需要将input_dim
作为其中一个参数传递给create_model()
def create_model(input_dim):
# create model
model = Sequential()
# model.add(Dense(12, input_dim=4, init='uniform', activation='relu'))
model.add(Dense(12, input_dim=input_dim, init='uniform', activation='relu'))
虽然您无需在input_dim
内使用create_model
,只是为了删除错误。