【发布时间】:2020-04-22 10:26:36
【问题描述】:
我正在将 TensorFlow 代码迁移到 TensorFlow 2.1.0。
这是原始代码:
conv = tf.layers.conv2d(inputs, out_channels, kernel_size=3, padding='SAME')
conv = tf.contrib.layers.batch_norm(conv, updates_collections=None, decay=0.99, scale=True, center=True)
conv = tf.nn.relu(conv)
conv = tf.contrib.layers.max_pool2d(conv, 2)
这就是我所做的:
conv1 = Conv2D(out_channels, (3, 3), activation='relu', padding='same', data_format='channels_last', name=name)(inputs)
conv1 = Conv2D(64, (5, 5), activation='relu', padding='same', data_format="channels_last")(conv1)
#conv = tf.contrib.layers.batch_norm(conv, updates_collections=None, decay=0.99, scale=True, center=True)
pool1 = MaxPooling2D(pool_size=(2, 2), data_format="channels_last")(conv1)
我的问题是我不知道如何处理tf.contrib.layers.batch_norm。
如何将 tf.contrib.layers.batch_norm 迁移到 Tensorflow 2.x?
更新:
使用评论建议,我认为我已经正确迁移:
conv1 = BatchNormalization(momentum=0.99, scale=True, center=True)(conv1)
但我不确定decay 是否像momentum 并且我不知道如何在BatchNormalization 方法中设置updates_collections。
【问题讨论】:
-
在您获得 conv/max 池层的同一位置有一个
BatchNormalization层。 -
谢谢。现在我需要知道如何在这个
BatchNormalization中使用相同的参数。
标签: python tensorflow keras