Raw*_*ani 4 python deep-learning keras tensorflow
我有一个使用tensorflow.keras库构建的基本 CNN 模型代码:
model = Sequential()
# First Layer
model.add(Conv2D(64, (3,3), input_shape = (IMG_SIZE,IMG_SIZE,1)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size = (3,3)))
# Second Layer
model.add(Conv2D(64, (3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size = (3,3)))
# Third Layer
model.add(Conv2D(64, (3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size = (3,3)))
# Fourth Layer
model.add(Conv2D(64, (3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size = (3,3)))
# Fifth Layer
model.add(Conv2D(64, (3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size = (3,3)))
model.add(Flatten())
# Sixth Layer
model.add(Dense(64))
model.add(Activation("relu"))
# Seventh Layer
model.add(Dense(1))
model.add(Activation('sigmoid'))
Run Code Online (Sandbox Code Playgroud)
现在,我想在第二层和第四层之间建立连接,以使用tensorflow.keras库实现残差块。
那么,我应该如何修改代码来实现这样的残差块呢?
B D*_*het 11
ResNet架构的残差块如下:
您需要使用Keras 功能 API,因为顺序模型太有限。它在 Keras 中的实现是:
from tensorflow.keras import layers
def resblock(x, kernelsize, filters):
fx = layers.Conv2D(filters, kernelsize, activation='relu', padding='same')(x)
fx = layers.BatchNormalization()(fx)
fx = layers.Conv2D(filters, kernelsize, padding='same')(fx)
out = layers.Add()([x,fx])
out = layers.ReLU()(out)
out = layers.BatchNormalization()(out)
return out
Run Code Online (Sandbox Code Playgroud)
BatchNormalisation()层不是必需的,但可能是提高其准确性的可靠选择。x还需要具有与filters参数相同数量的过滤器。
| 归档时间: |
|
| 查看次数: |
12551 次 |
| 最近记录: |