将 input_dim 传递给 KerasClassifier(sklearn 包装器/接口)

Posted

技术标签:

【中文标题】将 input_dim 传递给 KerasClassifier(sklearn 包装器/接口)【英文标题】:Passing input_dim to KerasClassifier (sklearn wrapper/interface) 【发布时间】:2017-06-25 02:45:05 【问题描述】:

我最初尝试了相同的方法并遇到了与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 不是合法参数

【问题讨论】:

【参考方案1】:

您需要将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'))

虽然您不需要在 create_model 中使用 input_dim 以消除错误。

【讨论】:

以上是关于将 input_dim 传递给 KerasClassifier(sklearn 包装器/接口)的主要内容,如果未能解决你的问题,请参考以下文章

pytorch中LSTM各参数理解

convLSTM 大小不匹配

如何将对象数组作为道具传递给组件,然后将数组的成员作为道具传递给嵌套组件?

将变量传递给 jQuery 插件参数

将数组传递给 ParamArray

关于将值传递给方法的困惑? [复制]