【问题标题】:How can I use dropout in keras如何在 keras 中使用 dropout
【发布时间】:2019-04-15 17:45:53
【问题描述】:

cnn 建模时出错。 使用 dropout 时,出现以下错误信息。

这是错误信息


UnboundLocalError: local variable 'a' referenced before assignment

型号

def getModel(input_shape,filter_size=32,pool_size=(2,2),dropout=0.2): 

model = Sequential()
model.add(Conv2D(16, (3, 3), input_shape=input_shape, activation='elu', kernel_initializer="he_normal", padding='same', kernel_regularizer=regularizers.l2(0.01)))

我想在 maxpooling 之后使用 dropout

model.add(MaxPooling2D(pool_size=pool_size))
model.add(Dropout(dropout))

model.add(Conv2D(32, (2, 2), kernel_initializer="he_normal", padding='same',strides=1, kernel_regularizer=regularizers.l2(0.02)))
model.add(Activation('elu'))

model.add(Conv2D(32, (2, 3), kernel_initializer="he_normal", padding='same', strides=1, kernel_regularizer=regularizers.l2(0.02)))
model.add(Activation('elu'))

model.add(Conv2D(16, (2, 2), kernel_initializer="he_normal", padding='same', strides=1, kernel_regularizer=regularizers.l2(0.02)))
model.add(Activation('elu'))

model.add(Conv2D(32, (2, 3), kernel_initializer="he_normal", padding='same', strides=1, kernel_regularizer=regularizers.l2(0.02)))
model.add(Activation('elu'))

model.add(Conv2D(32, (2, 2), kernel_initializer="he_normal", padding='same', strides=1, kernel_regularizer=regularizers.l2(0.02)))
model.add(Activation('elu'))

这是平坦的区域

model.add(Flatten())
model.add(Dense(126, kernel_initializer="glorot_normal" ,kernel_regularizer=regularizers.l2(0.01)))
model.add(Activation('tanh'))
model.add(Dense(classes))
model.add(Activation('sigmoid'))

编译

model.compile(loss='categorical_crossentropy',
              optimizer='adadelta',  #SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
              metrics=['accuracy'])
return model

模型拟合

np.random.seed(42)
hist = model.fit(X_train, Y_train, batch_size = batch_size, epochs = epochs, verbose = 1, validation_split = .2)

【问题讨论】:

  • 你能在哪里解决这个问题?

标签: keras dropout


【解决方案1】:

我无法弄清楚这里的“a”是什么,因此会出现错误,但我认为以下代码应该会有所帮助:

model.add(Conv2D(32, (2, 2), kernel_initializer="he_normal",padding='same',strides=1, kernel_regularizer=regularizers.l2(0.02)))
model.add(Activation('elu'))
model.add(Conv2D(32, (2, 3), kernel_initializer="he_normal", padding='same', strides=1, kernel_regularizer=regularizers.l2(0.02)))
model.add(Activation('elu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(32, (2, 3), kernel_initializer="he_normal", padding='same', strides=1, kernel_regularizer=regularizers.l2(0.02)))
model.add(Activation('elu'))
model.add(Conv2D(32, (2, 2), kernel_initializer="he_normal", padding='same', strides=1, kernel_regularizer=regularizers.l2(0.02)))
model.add(Activation('elu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

【讨论】:

    猜你喜欢
    • 2019-06-16
    • 2021-03-27
    • 1970-01-01
    • 2018-10-31
    • 2018-05-26
    • 2019-09-06
    • 2019-08-09
    • 2018-07-18
    • 2020-08-05
    相关资源
    最近更新 更多