我使用Keras神经网络,我希望自动设置输入维度,而不是像我到目前为止看到的每个教程中那样硬编码。我怎么能做到这一点?
我的代码:
sys.path.append(app_root)
我得到的错误:
追踪(最近一次呼叫最后一次):
文件ipython-input-2-49d765e85d15,第20行,在estimator.fit(X,Y)
TypeError:调用()缺少1个必需的位置参数:'输入'
答案 0 :(得分:4)
我会将您的baseline_model
换行如下:
def baseline_model(x):
def bm():
# create model
model = Sequential()
model.add(Dense(20, input_dim=x, kernel_initializer='normal', activation='relu'))
model.add(Dense(1, kernel_initializer='normal'))
# Compile model
model.compile(loss='mean_absolute_error', optimizer='adam')
return model
return bm
然后将KerasRegressor
定义并适合:
estimator = KerasRegressor(build_fn=baseline_model(inpt), epochs=2, batch_size=1000, verbose=2)
estimator.fit(X, Y)
这使您可以避免在baseline_model
中对输入维度进行硬编码。
答案 1 :(得分:0)
我尝试并工作
def create_model(max_features, num_class):
def bm():
model = Sequential()
model.add(Dense(512, input_shape=(max_features,)))
model.add(Activation('relu'))
model.add(Dropout(0.3))
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.3))
model.add(Dense(num_class, activation='softmax'))
model.summary()
model.compile(
loss='categorical_crossentropy', optimizer='adam',metrics['accuracy'])
return model
return bm
然后
model_clf = KerasClassifier(
build_fn=create_model(max_features, num_class), epochs=10,
batch_size=32, verbose=2)
history = model_clf.fit(
X_train, y_train,
batch_size=32,
epochs=10,
verbose=2,
validation_data=(X_test, y_test))