私はKerasニューラルネットワークを使用しています。これまで見てきたすべてのチュートリアルのように、ハードコードされていない入力次元を自動的に設定したいと思います。どのように私はこれを達成することができますか?KerasRegressorで入力引数を指定する
マイコード:
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasRegressor
seed = 1
X = df_input
Y = df_res
def baseline_model(x):
# 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
inpt = len(X.columns)
estimator = KerasRegressor(build_fn = baseline_model(inpt ) , epochs=2, batch_size=1000, verbose=2)
estimator.fit(X,Y)
そして、私が取得エラー:
def baseline_model(x):
def baseline_model():
# 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 baseline_model
そしてとしてKerasRegressor
を定義し、フィットを:
Traceback (most recent call last):
File ipython-input-2-49d765e85d15, line 20, in estimator.fit(X,Y)
TypeError: call() missing 1 required positional argument: 'inputs'
このエラーは、エスティメータがあなたが呼び出せるメソッドではないために発生します。具体的には、scikit-learn APIを持つオブジェクトです。つまり、 'estimator.fit(X、Y)'で推定子を訓練し、 'estimator.predict(X、Y)'で予測を行うことができます。 – rvinas
ありがとうございます。また、実用的な解決策がありますか? –
'estimator(X、Y)'を 'estimator.fit(X、Y)'に置き換えてください。 – rvinas