【问题标题】:How to load imagenet weights before Training in Keras for AlexNet?如何在为 AlexNet 训练 Keras 之前加载 imagenet 权重?
【发布时间】:2019-11-07 19:18:26
【问题描述】:

您好,我使用顺序方法在 keras 中编写了 AlexNet。我想知道是否以及如何加载 imagenet 权重来训练模型?

目前我正在为每一层使用 randomNormal 内核初始化。但我想使用 imagenet 权重进行训练。我将权重作为 H5 文件。有人也可以给一个示例代码吗?

【问题讨论】:

  • 能给个权重的链接吗?

标签: python keras deep-learning conv-neural-network sequential


【解决方案1】:
model = Sequential()

# 1st Convolutional Layer
model.add(Conv2D(filters=96, input_shape=(224,224,3), kernel_size=(11,11), strides=(4,4), padding=’valid’))
model.add(Activation(‘relu’))
# Max Pooling
model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding=’valid’))

# 2nd Convolutional Layer
model.add(Conv2D(filters=256, kernel_size=(11,11), strides=(1,1), padding=’valid’))
model.add(Activation(‘relu’))
# Max Pooling
model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding=’valid’))

# 3rd Convolutional Layer
model.add(Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), padding=’valid’))
model.add(Activation(‘relu’))

# 4th Convolutional Layer
model.add(Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), padding=’valid’))
model.add(Activation(‘relu’))

# 5th Convolutional Layer
model.add(Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), padding=’valid’))
model.add(Activation(‘relu’))
# Max Pooling
model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding=’valid’))

# Passing it to a Fully Connected layer
model.add(Flatten())
# 1st Fully Connected Layer
model.add(Dense(4096, input_shape=(224*224*3,)))
model.add(Activation(‘relu’))
# Add Dropout to prevent overfitting
model.add(Dropout(0.4))

# 2nd Fully Connected Layer
model.add(Dense(4096))
model.add(Activation(‘relu’))
# Add Dropout
model.add(Dropout(0.4))

# 3rd Fully Connected Layer
model.add(Dense(1000))
model.add(Activation(‘relu’))
# Add Dropout
model.add(Dropout(0.4))

# Output Layer
model.add(Dense(17))
model.add(Activation(‘softmax’))

model.summary()

# Compile the model
model.compile(loss=keras.losses.categorical_crossentropy, optimizer=’adam’, metrics=[“accuracy”])

model.load_weights('weight.h5')

【讨论】:

    【解决方案2】:

    由于您在 keras 中编写了 AlexNet,并且您将权重作为 H5 文件,您可以将权重从 h5 文件恢复到您的 Keras 模型。

    model.load_weights('my_model_weights.h5')
    

    【讨论】:

      猜你喜欢
      • 2018-07-13
      • 1970-01-01
      • 2019-05-15
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      相关资源
      最近更新 更多