Mar*_*c S 3 initialization keras
我使用Keras神经网络,并且希望自动设置输入维度,而不是像到目前为止所看到的每篇教程一样进行硬编码。我该怎么做?
我的代码:
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)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
追溯(最近一次通话):
在estimator.fit(X,Y)中的文件ipython-input-2-49d765e85d15,第20行
TypeError:call()缺少1个必需的位置参数:'inputs'
我将包裹您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
Run Code Online (Sandbox Code Playgroud)
然后定义并拟合KerasRegressor
为:
estimator = KerasRegressor(build_fn=baseline_model(inpt), epochs=2, batch_size=1000, verbose=2)
estimator.fit(X, Y)
Run Code Online (Sandbox Code Playgroud)
这避免了必须对中的输入维进行硬编码baseline_model
。
归档时间: |
|
查看次数: |
1416 次 |
最近记录: |