Keras意外的内核正则化错误

4

我尝试使用核正则化,这是机器学习中对权重的正则化。

这是我的代码:

 def model_param(self): 
        """ Method to do deep learning

        """

        from keras.models import Sequential
        from keras.layers import Dense, Dropout, Activation
        from keras.optimizers import SGD
        from keras import regularizers

        self.model = Sequential()
        # Dense(64) is a fully-connected layer with 64 hidden units.
        # in the first layer, you must specify the expected input data shape:
        # here, 20-dimensional vectors.
        self.model.add(Dense(32, activation='relu', input_dim=self.x_train_std.shape[1]),\
                       kernel_regularizer=regularizers.l2(0.01))
        self.model.add(Dropout(0.5))
        #self.model.add(Dense(60, activation='relu'))
        #self.model.add(Dropout(0.5))
        self.model.add(Dense(1, activation='sigmoid'))

        sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
        self.model.compile(loss='binary_crossentropy',
              optimizer=sgd,
              metrics=['accuracy'])

得到以下错误,提示未识别的关键字参数。
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-225-3cf87672aeed> in <module>()
----> 1 dl_2.model_param()

<ipython-input-223-08450db8ff4d> in model_param(self)
     65         # in the first layer, you must specify the expected input data shape:
     66         # here, 20-dimensional vectors.
---> 67         self.model.add(Dense(32, activation='relu', input_dim=self.x_train_std.shape[1]),                       kernel_regularizer=regularizers.l2(0.01))
     68         self.model.add(Dropout(0.5))
     69         #self.model.add(Dense(60, activation='relu'))

TypeError: add() got an unexpected keyword argument 'kernel_regularizer'
1个回答

12

试试这个:

 self.model.add(Dense(32, activation='relu', input_dim=self.x_train_std.shape[1], kernel_regularizer=regularizers.l2(0.01)))

kernel_regularizer是Dense的一个参数,而非add函数的参数。


是的,我刚刚弄明白了。谢谢。然而,使用kernel_regularizer会破坏我对神经网络学习能力的理解。 - Baktaawar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接