回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有以下代码,使用<a href="https://github.com/fchollet/keras/blob/master/keras/wrappers/scikit_learn.py" rel="noreferrer">Keras Scikit-Learn Wrapper</a>,工作正常:</p>
<pre><code>from keras.models import Sequential
from keras.layers import Dense
from sklearn import <a href="https://www.cnpython.com/pypi/dataset" class="inner-link">dataset</a>s
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import cross_val_score
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
def main():
"""
Description of main
"""
iris = datasets.load_iris()
X, y = iris.data, iris.target
NOF_ROW, NOF_COL = X.shape
# evaluate using 10-fold cross validation
seed = 7
np.random.seed(seed)
model = KerasClassifier(build_fn=create_model, nb_epoch=150, batch_size=10, verbose=0)
kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed)
results = cross_val_score(model, X, y, cv=kfold)
print(results.mean())
# 0.666666666667
if __name__ == '__main__':
main()
</code></pre>
<p>可以下载<code>pima-indians-diabetes.data</code>。</p>
<p>现在我要做的是按以下方式将值<code>NOF_COL</code>传递到<code>create_model()</code>函数的参数中</p>
<pre><code>model = KerasClassifier(build_fn=create_model(input_dim=NOF_COL), nb_epoch=150, batch_size=10, verbose=0)
</code></pre>
<p>使用类似这样的<code>create_model()</code>函数:</p>
<pre><code>def create_model(input_dim=None):
# create model
model = Sequential()
model.add(Dense(12, input_dim=input_dim, 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
</code></pre>
<p>但是它没有给出这个错误:</p>
<pre><code>TypeError: __call__() takes at least 2 arguments (1 given)
</code></pre>
<p>正确的方法是什么?</p>