Neural network Keras与Caffe中的正则化剂

Neural network Keras与Caffe中的正则化剂,neural-network,theano,conv-neural-network,keras,Neural Network,Theano,Conv Neural Network,Keras,我在KERAS编辑了一个AlexNet,试图学习一门课(即狗/脸或不是狗/脸)。 我有正确的图像的训练样本,因此Ytrain是[1,0],而错误的图像则是[0,1]。 目标是知道图像是否是狗(例如) 在培训期间,损失非常大,约1亿美元 所以我删掉了那几行,它成功了 activity_regularizer=ActivityRegularizer(l1=1, l2=1), W_regularizer=WeightRegularizer(l1=2.0,l2=0.0))) 在Caffe中,模型可以很

我在KERAS编辑了一个AlexNet,试图学习一门课(即狗/脸或不是狗/脸)。 我有正确的图像的训练样本,因此Ytrain是[1,0],而错误的图像则是[0,1]。 目标是知道图像是否是狗(例如)

在培训期间,损失非常大,约1亿美元

所以我删掉了那几行,它成功了

activity_regularizer=ActivityRegularizer(l1=1, l2=1),
W_regularizer=WeightRegularizer(l1=2.0,l2=0.0)))
在Caffe中,模型可以很好地处理卷积层中的这些线:

param {
  lr_mult: 1
  decay_mult: 1
}
param {
  lr_mult: 2
  decay_mult: 0
}
以下是Keras中的模型(图像大小为3,68,56):


是吗

你试过用一个简单的SGD作为一个学习率很低的优化器吗?好吧,问题是那些产生问题的行:
activity\u regularizer=ActivityRegularizer(l1=1,l2=1),W\u regularizer=WeightRegularizer(l1=2,l2=0))
现在的问题是-Y?。它应该像在Caffe中那样工作:
param{lr\u mult:1 decay\u mult:1}param{lr\u mult:2 decay\u mult:0}
i错了吗??Keras正则化器与Caffe中的分层学习率完全不同。他们给损失增加了新的正则化项。请参阅和。您是否尝试过使用简单的SGD作为具有较小学习率的优化器?好的,问题在于产生问题的那些行:
activity\u regularizer=ActivityRegularizer(l1=1,l2=1),W_regularizer=WeightRegularizer(l1=2,l2=0))
现在的问题是-Y?。它应该像在Caffe中那样工作:
param{lr\u mult:1 decay\u mult:1}param{lr\u mult:2 decay\u mult:0}
i错了吗??Keras正则化器与Caffe中的分层学习率完全不同。他们给损失增加了新的正则化项。见和。
    Xtrain = self.Xtrain
    Ytrain = self.Ytrain

    batch_size = 10
    nb_classes = 2
    nb_epoch = 3

    # input image dimensions
    img_rows, img_cols = np.shape(self.Xtrain)[2], np.shape(self.Xtrain)[3]
    #########################
    ###   AlexNet - Start  ##
    #########################
    print("Defining AlexNet...")

    model = Sequential()
    model.add(ZeroPadding2D((1,1),input_shape=(3,img_rows,img_cols)))
    model.add(Convolution2D(96, 11, 11, border_mode='valid',
                            init='glorot_normal',
                            activation='relu',
                            activity_regularizer=ActivityRegularizer(l1=1, l2=1),
                            W_regularizer=WeightRegularizer(l1=2.0,l2=0.0)))
    model.add(BatchNormalization())
    model.add(MaxPooling2D(pool_size=(3, 3),strides=(2,2)))

    model.add(ZeroPadding2D((1,1)))
    model.add(Convolution2D(256, 5, 5, border_mode='valid',
                            init='glorot_normal',
                            activation='relu',
                            activity_regularizer=ActivityRegularizer(l1=1, l2=1),
                            W_regularizer=WeightRegularizer(l1=2,l2=0)))
    model.add(BatchNormalization())
    model.add(MaxPooling2D(pool_size=(3, 3),strides=(2,2)))

    model.add(ZeroPadding2D((1,1)))
    model.add(Convolution2D(384, 3, 3, border_mode='valid',
                            init='glorot_normal',
                            activation='relu',
                            activity_regularizer=ActivityRegularizer(l1=1, l2=1),
                            W_regularizer=WeightRegularizer(l1=2,l2=0)))

    model.add(ZeroPadding2D((1,1)))
    model.add(Convolution2D(384, 3, 3, border_mode='valid',
                            init='glorot_normal',
                            activation='relu',
                            activity_regularizer=ActivityRegularizer(l1=1, l2=1),
                            W_regularizer=WeightRegularizer(l1=2,l2=0)))

    model.add(ZeroPadding2D((1,1)))
    model.add(Convolution2D(256, 3, 3, border_mode='valid',
                            init='glorot_normal',
                            activation='relu',
                            activity_regularizer=ActivityRegularizer(l1=1, l2=1),
                            W_regularizer=WeightRegularizer(l1=2,l2=0)))
    model.add(MaxPooling2D(pool_size=(3, 3),strides=(2,2)))

    model.add(Flatten())

    model.add(Dense(4096,
                    activation='relu',
                    init='glorot_normal',
                    activity_regularizer=ActivityRegularizer(l1=1, l2=1),
                    W_regularizer=WeightRegularizer(l1=2,l2=0)))
    model.add(Dropout(0.5))

    model.add(Dense(4096,
                    activation='relu',
                    init='glorot_normal',
                    activity_regularizer=ActivityRegularizer(l1=1, l2=1),
                    W_regularizer=WeightRegularizer(l1=2,l2=0)))
    model.add(Dropout(0.5))


    model.add(Dense(nb_classes,
                    activation='softmax',
                    activity_regularizer=ActivityRegularizer(l1=1, l2=1),
                    W_regularizer=WeightRegularizer(l1=2,l2=0)))

    #######################
    ###   AlexNet - End  ##
    #######################

    add = Adadelta(lr=0.1, rho=0.95, epsilon=1e-06, decay=0.995)
    print("Compiling AlexNet...")
    model.compile(loss='categorical_crossentropy', optimizer=add)

    print("Fitting AlexNet...")
    model.fit(Xtrain, Ytrain, batch_size=batch_size, nb_epoch=nb_epoch,
      show_accuracy=True, verbose=1, shuffle=True)