玩转pytorch和tensorflow之(3)——layernorm

1 实现原理
Layer Normalization 也是一种归一化技术。与 BatchNormalization不同的是,LayerNormalization 是在指定的特征维度上进行归一化的,而BatchNormalization是在数据批次维度上进行归一化的。

2 从tensorflow到pytorch

tensorflow中还是用keras的layernorm模型,具体的名字是keras.layers.LayerNormalization

需要指定epsilon和axis,否则会采用默认值。

我的例子取epsilon=1e-5,axis取[-2,-1],对最后两维做归一化。

这里采用get_weights从LayerNormalization中得到参数,然后转换为torch的LayerNorm的参数。注意有一个reshape。

模型的输入维度定义:[1,2,3,4],最后两维是[3,4],将会对这两个维度归一化。

from torch.nn import BatchNorm2d
import torch
import tensorflow as tf
import numpy as np
from tensorflow import keras

#例子是对最后两维做layernorm

#1)tensorflow 转为 pytorch
B,C,H,W=1,2,3,4
LN_EPS=1e-5
inputs = np.random.rand(B,C,H,W).astype("float32")

#tensorflow LayerNormalization 模型

#先用模型处理一次,这样才能得到模型的参数
inputs_tf = tf.convert_to_tensor(inputs)
layer_tf &#
  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geastwind1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值