python - 通过 tensorflow 将归一化重现到 keras
问题描述
实际上我正在尝试在 keras 上重现一个 tensorflow 模型,我对这个话题真的很陌生。我想重现那些行
embedding = tf.layers.conv2d(conv6, 128, (16, 16), padding='VALID', name='embedding')
embedding = tf.reshape(embedding, (-1, 128))
embedding = embedding - tf.reduce_min(embedding, keepdims =True)
z_n = embedding/tf.reduce_max(embedding, keepdims =True)
我的实际代码是:
def conv_conv_pool(n_filters,
name,
pool=True,
activation=tf.nn.relu, padding='same', filters=(3,3)):
"""{Conv -> BN -> RELU}x2 -> {Pool, optional}
Args:
input_ (4-D Tensor): (batch_size, H, W, C)
n_filters (list): number of filters [int, int]
training (1-D Tensor): Boolean Tensor
name (str): name postfix
pool (bool): If True, MaxPool2D
activation: Activaion functions
Returns:
net: output of the Convolution operations
pool (optional): output of the max pooling operations
"""
net = Sequential()
for i, F in enumerate(n_filters):
conv = Conv2D(
filters = F,
kernel_size = (3,3),
padding = 'same',
)
net.add(conv)
batch_norm = BatchNormalization()
net.add(batch_norm)
net.add(Activation('relu'))
if pool is False:
return net
pool = Conv2D(
filters = F,
kernel_size = (3,3),
strides = (2,2),
padding = 'same',
)
net.add(pool)
batch_norm = BatchNormalization()
net.add(batch_norm)
net.add(Activation('relu'))
return net
def model_keras():
model = Sequential()
model.add(conv_conv_pool(n_filters = [8, 8], name="1"))
model.add(conv_conv_pool([32, 32], name="2"))
model.add(conv_conv_pool([32, 32], name="3"))
model.add(conv_conv_pool([64, 64], name="4"))
model.add(conv_conv_pool([64, 64], name="5"))
model.add(conv_conv_pool([128, 128], name="6", pool=False))
return model
标准化应该在第 6 层之后。
我在考虑使用 lambda 层,这是正确的吗?如果是,我应该怎么写?
解决方案
我相信您想切换到使用 keras 作为 API 的 tensorflow 2。你需要安装/升级到 tensorflow 2,然后你可以试试这个:
import tensorflow as tf
embedding = tf.keras.layers.conv2d(conv6, 128, (16, 16), padding='VALID',
name='embedding')
embedding = tf.keras.layers.reshape(embedding, (-1, 128))
embedding = embedding - tf.math.reduce_min(embedding, keepdims =True)
z_n = embedding/tf.math.reduce_max(embedding, keepdims =True)
推荐阅读
- java - 比较hashmap的两个hashmap
- reactjs - 如何在抽屉导航器的 customComponent 中使用动态数据更新文本
- python - 如何为以下表达式编写正则表达式来拆分数据
- google-apps-script - 需要从电子邮件中复制数据并粘贴到谷歌电子表格中
- mongodb - 每个 MongoDB 文档的 BSON 大小
- amazon-web-services - 如何分解 AWS Elasticsearch 中的一个节点?
- java - 第二次按下 GUI 按钮
- reactjs - 如何在 ios safari 上重置 reactjs web 应用程序中的浏览器缩放?
- python - VSCode,为什么我在尝试将 mysqlclient 安装到 django 项目时出错
- go - Golang 将任何结构存储在其他结构字段中