Python初心者なのですが、解析プログラムを作成しています。
DNNモデル構造をGridsearchで最適化しようと、自作関数を定義したところでエラーが出ました。
よろしければお知恵をお貸しください。どうぞよろしくお願い致します。
'float' object is not callable
def build_model(activation , optimizer): input_layer=Input(shape=(4,),dtype='float') model1=Dense(8)(input_layer) model1=Activation('relu')(model1) model1=Dropout(0.25)(model1) model2=Dense(4)(model1) model2=Activation(activation)(model2) model2=Dropout(0.25)(model2) model2=Dense(1)(model2) model3=Dense(4)(model1) model3=Activation(activation)(model3) model3=Dropout(0.25)(model3) model3=Dense(1)(model3) output_layer=Concatenate()([model2,model3]) defmodel=Model(input=input_layer,outputs=output_layer) defmodel.summary() defmodel.compile(optimizer=optimizer,loss='mean_squared_logarithmic_error') return defmodel activation = ["softmax"] optimizer = ["adam"] nb_epoch = [200] batch_size = [50] param_grid = dict(activation=activation, optimizer=optimizer, nb_epoch=nb_epoch, batch_size=batch_size) defmodel = KerasRegressor(build_fn=build_model, verbose=0) def my_scorer(a, b): c=float(1.0) scoring_value = dll(a, b, float(c)) #dllは外部ライブラリで、三つの引数を受け取り、一つの値を返します。 return scoring_value from sklearn.metrics import make_scorer my_func = make_scorer(my_scorer(a, b), greater_is_better=False) grid = GridSearchCV(estimator=defmodel, param_grid=param_grid, scoring=my_func) grid_result = grid.fit(info_headless, coeff)
試したこと
引数a,bはndarray型です。
自作関数を使わない状態では問題ありませんでした。
my_value=my_scorer(a, b)などとしても問題なく動作しますが、上記のコードだと最後の1行でエラーを出すようです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー