Keras GridSearchCV 最好是负数

问题描述

我需要使用 kesar tensorflow 创建一个神经网络。我还需要对指标使用“均方误差”。我已经对参数进行了必要的修改,以便它适合模型。我知道 MSE 输出不应该是负值,但我不确定为什么我的 gridsearchcv 的“最佳”是负值。我的 MSE 和损失也异常高。我已将指标更改为“mse”并将激活更改为“线性”,因为它需要一个合理的参数值。下面是我的代码

我的模型功能

def create_my_model(hidden_layers = 0,l1 =0.1,l2 = 0.01):
    model = Sequential()
    for i,nodes in enumerate(hidden_layers):
        if i == 0:

            model.add(Dense(nodes,input_dim = 9,activation = 'sigmoid',kernel_regularizer=keras.regularizers.l1_l2(l1,l2)))
        else:
            model.add(Dense(nodes,l2)))
   

                
    model.add(Dense(1,activation = 'linear')) #outer layer 
    
    model.compile(loss="mse",optimizer="adam",metrics=["mse"])
    
    return model

我的 gridsearchcv 实现:

model = KerasClassifier(build_fn=create_my_model)

hidden_layers = [[15,14,13,12,11,10],[20,19,18,17,16,15],[15,13],[14,10,9]]
l1 = [0.001,0.01]
l2 = [0.001,0.01]
#activi = ['relu','sigmoid','tanh','elu']


parameter_grid = dict(hidden_layers = hidden_layers,l1=l1,l2=l2)

mse = make_scorer(mean_squared_error,greater_is_better=False)

mygrid = gridsearchcv(estimator = model,param_grid=parameter_grid,n_jobs = -1,scoring = mse)
grid_result = mygrid.fit(classification,target)

我的输出

 639/639 [==============================] - 2s 2ms/step - loss: 2176786.7854 - mse: 2176786.5518

 Best: -0.206580 using {'hidden_layers': [15,'l1': 0.001,'l2': 0.001}

我所做的更改

我已将评分更改为“neg_mean_squared_error”,但我的最佳评分仍然为负:

mygrid = gridsearchcv(estimator = model,scoring ='neg_mean_squared_error')

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...