首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

棘手的Perlin噪声问题。Grad函数如何使用归一化向量?

Perlin噪声是一种由Ken Perlin发明的自然噪声生成算法,广泛应用于计算机图形学、游戏开发、动画制作等领域。它通过在多维空间中采样随机向量,并使用插值方法将这些向量组合起来,生成平滑的随机值。Grad函数是Perlin噪声算法中的一个关键组成部分,用于计算噪声值。以下是关于Perlin噪声的相关信息:

Perlin噪声的基础概念

  • 原理:Perlin噪声通过在坐标系中划分晶格,并在每个晶格顶点处生成一个随机梯度向量。对于给定点,通过插值计算该点的噪声值。
  • 优势:生成的随机值具有连续性和自然性,适用于模拟自然界中的各种效果,如山脉、云层、水波纹等。
  • 类型:主要包括2D和3D Perlin噪声,适用于不同的应用场景。

Grad函数如何使用归一化向量

在Perlin噪声中,Grad函数实际上是一个用于计算梯度的函数,它接收一个向量作为输入,并返回一个向量作为输出。这个向量通常是一个单位向量,表示该方向上的梯度大小。在二维空间中,Grad函数可以这样实现:

代码语言:txt
复制
vec2 grad2(vec2 p) {
    vec2 i = floor(p);
    vec2 f = fract(p) - 0.5;
    vec2 u = f * f * (3.0 - 2.0 * f);
    vec2 v = -1.0 + 1.0 * (f * 2.0 - 1.0);

    vec2 t0 = vec2(1.0, 0.0);
    vec2 t1 = vec2(-1.0, 0.0);
    vec2 t2 = vec2(0.0, 1.0);
    vec2 t3 = vec2(0.0, -1.0);

    vec2 i0 = floor(u + t0);
    vec2 i1 = floor(u + t1);
    vec2 i2 = floor(u + t2);
    vec2 i3 = floor(u + t3);

    vec2 t00 = vec2(i0.x, i0.y);
    vec2 t01 = vec2(i1.x, i0.y);
    vec2 t02 = vec2(i2.x, i0.y);
    vec2 t03 = vec2(i3.x, i0.y);

    vec2 t10 = vec2(i0.x, i1.y);
    vec2 t11 = vec2(i1.x, i1.y);
    vec2 t12 = vec2(i2.x, i1.y);
    vec2 t13 = vec2(i3.x, i1.y);

    vec2 t20 = vec2(i0.x, i2.y);
    vec2 t21 = vec2(i1.x, i2.y);
    vec2 t22 = vec2(i2.x, i2.y);
    vec2 t23 = vec2(i3.x, i2.y);

    vec2 t30 = vec2(i0.x, i3.y);
    vec2 t31 = vec2(i1.x, i3.y);
    vec2 t32 = vec2(i2.x, i3.y);
    vec2 t33 = vec2(i3.x, i3.y);

    vec2 i00 = mix(vec2(t00.x, t00.y), vec2(t10.x, t10.y), f.x);
    vec2 i01 = mix(vec2(t01.x, t01.y), vec2(t11.x, t11.y), f.x);
    vec2 i02 = mix(vec2(t02.x, t02.y), vec2(t12.x, t12.y), f.x);
    vec2 i03 = mix(vec2(t03.x, t03.y), vec2(t13.x, t13.y), f.x);

    vec2 i10 = mix(vec2(t00.x, t01.y), vec2(t10.x, t11.y), f.y);
    vec2 i11 = mix(vec2(t01.x, t01.y), vec2(t11.x, t11.y), f.y);
    vec2 i12 = mix(vec2(t02.x, t02.y), vec2(t12.x, t12.y), f.y);
    vec2 i13 = mix(vec2(t03.x, t03.y), vec2(t13.x, t13.y), f.y);

    vec2 p00 = mix(vec2(t00.x, t00.y), vec2(t10.x, t10.y), v.x);
    vec2 p01 = mix(vec2(t01.x, t01.y), vec2(t11.x, t11.y), v.x);
    vec2 p02 = mix(vec2(t02.x, t02.y), vec2(t12.x, t12.y), v.x);
    vec2 p03 = mix(vec2(t03.x, t03.y), vec2(t13.x, t13.y), v.x);

    vec2 p10 = mix(vec2(t00.x, t01.y), vec2(t10.x, t11.y), v.x);
    vec2 p11 = mix(vec2(t01.x, t01.y), vec2(t11.x, t11.y), v.x);
    vec2 p12 = mix(vec2(t02.x, t02.y), vec2(t12.x, t12.y), v.x);
    vec2 p13 = mix(vec2(t03.x, t03.y), vec2(t13.x, t13.y), v.x);

    vec2 p20 = mix(vec2(t00.x, t02.y), vec2(t10.x, t12.y), v.x);
    vec2 p21 = mix(vec2(t01.x, t02.y), vec2(t11.x, t12.y), v.x);
    vec2 p22 = mix(vec2(t02.x, t02.y), vec2(t12.x, t12.y), v.x);
    vec2 p23 = mix(vec2(t03.x, t03.y), vec2(t13.x, t13.y), v.x);

    vec2 p30 = mix(vec2(t00.x, t03.y), vec2(t10.x, t13.y), v.x);
    vec2 p31 = mix(vec2(t01.x, t03.y), vec2(t11.x, t13.y), v.x);
    vec2 p32 = mix(vec2(t02.x, t03.y), vec2(t12.x, t13.y), v.x);
    vec2 p33 = mix(vec2(t03.x, t03.y), vec2(t13.x, t13.y), v.x);

    vec2 grad = mix(mix(p00, p10, i1.x), mix(p01, p11, i1.x), i0.x);
    grad += mix(mix(p02, p12, i1.x), mix(p03, p13, i1.x), i0.x);
    grad += mix(mix(p20, p30, i2.x), mix(p21, p31, i2.x), i0.x);
    grad += mix(mix(p22, p32, i2.x), mix(p23, p33, i2.x), i0
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一篇文章搞懂柏林噪声算法,附代码讲解

本文以一种通俗简单的方式介绍Ken Perlin的改进版柏林噪声算法,算法代码采用c#编写,开源免费使用。如果你只是想看完整代码,可以点击文章结尾链接查看。...哈希函数在维基百科的定义如下: 哈希函数是一种从任何一种数据中创建小的数字“指纹”的方法,输入数据有任何细微的不同,都会令输出结果完全不一样 下面代码就是柏林噪声算法所使用的哈希函数。...由于哈希结果值是从p[]数组中得到的,所以哈希函数的返回值范围限定在0,255内。 梯度函数 我时常认为Ken Perlin的最初版算法里的grad()函数写法过于复杂,令人费解。...我们只要明白grad()函数的作用在于计算随机选取的梯度向量以及顶点位置向量的点积。...那如何让柏林噪声算法模拟出这样的自然噪声特性,解决方法也很简单:我们可以使用不同的频率(frequencies)和振幅(amplitudes)参数进行多几次柏林噪声计算,然后将结果叠加在一起。

11K52

如何生成酷炫的背景图片? | 数字艺术 Perlin Noise

Perlin 噪声常见实现形式为二维、三维或四维函数,但可以定义为任意数量的维。实现Perlin Noise通常包括三个步骤:网格定义;点积;插值。...插值 使用缓和的曲线来计算它们的权重和。由高等数学可以知道,函数越是高阶可导函数曲线越是平滑,在一阶导满足连续性,但它的二阶导在晶格顶点处(即t = 0或t = 1)不为0,会造成明显的不连续性。...这给了我们最终的影响力值: grad.x * dist.x + grad.y * dist.y + grad.z * dist.z 之所以可行,是因为两个向量的点积等于两个向量之间的角度的余弦值乘以这些向量的大小...应用 一维 Perlin函数 控制虚拟人物 在游戏中,使用柏林噪声不断调整虚拟人物的关节位置,使其看起来更生动。 绘制草图 电脑画的线总是笔直的,这会使它们看起来不自然和不友好。...可以使用Perlin噪波为绘制线算法引入抖动,使其看起来像是用手绘制的。 二维 Perlin函数 地形 Perlin Noise 用来表现地形的连绵起伏。

1.3K20
  • 简单聊聊 Perlin 噪声(下篇)

    程序开发中总会用到随机方法,一般的随机方法虽然通用,但是产生的随机数又因为过于"随机",不适合用来生成平滑连续的随机数据(譬如自然地形的高度),这个时候我们便需要使用特殊的随机方法了, Perlin...,基于此,Simplex 噪声的计算复杂度要比 Perlin 函数低不少,但另一方面,在 Perlin 噪声中,从给定坐标获取对应的方形非常简单,只需要对坐标取底(floor)即可,但在 Simplex...噪声还是比较简单的,譬如 三维 Perlin 噪声,使用的是立方体(三维中的方形)的 8 个顶点作为插值端点,更高维度的话,则是使用 超立方体 的各个端点作为插值端点,端点个数与维度( DDD )呈指数关系...( 2D2^D2D ) 一维 Perlin 噪声 说了多维 Perlin 噪声,那 一维 Perlin 噪声如何生成呢(毕竟一维坐标下并没有向量的概念)?...实际上,我们还是可以在一维坐标上"定义"二维向量,只需要将该二维向量的 yyy 轴数值设置为 000 即可,同样的,我们也可以依此计算出距离向量, 这样我们就可以沿用 二维 Perlin 噪声

    1.2K10

    利用噪声构建美妙的 CSS 图形

    如果从程序员的角度去理解的话,可以理解为我们在 JavaScript 中使用的 random() 函数,生成的数大致在 0~1 内是完全随机的。...柏林噪声 这样,我们就自然而然的引入了柏林噪声。 Perlin 噪声 ( Perlin noise ) 指由 Ken Perlin 发明的自然噪声生成算法。...在介绍它之前,我们先看看,上述的图形,如果我们不使用白噪声(完全随机),而是使用柏林噪声,会是什么样子呢?...而这里: 白噪声的问题在于,它实在太过于随机,毫无规律可言 而柏林噪声基于随机,并在此基础上利用缓动曲线进行平滑插值,使得最终得到噪声效果更加趋于自然 具体的实现方式在这里 Improved Noise...我们只需要知道,我们可以借助柏林噪声去构建更有规律的图形效果。让我们的图形更具美感。 利用 CSS-doodle,在 CSS 中利用柏林噪声 那么,在 CSS 中我们如何去使用柏林噪声呢?

    57820

    Procedural Noise Adversarial Examples for Black-Box Attacks on Deep Neural Networks 论文笔记(2)

    使用Perlin噪声作为程序化噪声是由于其易于使用, 流行并且简单, 虽然Perlin噪声不是最有效或者无伪影的噪声函数, 其简单的实现对于低成本的黑盒攻击而言十分有效....Perlin噪声的实现可以归结为三个步骤: 伪随机梯度向量的方格定义 对距离-梯度向量进行点乘操作 在这些值之间进行插值 对于一个给定的点, perlin噪声的值通过在方格上的最邻近的 ?...颜色映射(Colour Map) 颜色映射通常被用来在图片的颜色和模式上来创造额外的变化, 颜色图如何影响视觉外观的一个例子可见上图, 在本文中, 使用一个正弦函数和一个频率参数 ?...来映射颜色, 使用一个灰度颜色映射, 三通道的RGB也是一样的, 牺牲噪声的复杂性使得可以针对优化问题在一个更小的解空间里面去搜索, 所需要优化的参数也变小了 我们用噪声值 ? 定义它, 函数 ?...在本节中, 我们将详细介绍模型体系结构, 训练方法, 我们使用的攻击以及我们如何评估攻击性能.

    92010

    WebGL进阶——走进图形噪声

    不同Noise生成的材质 基础噪声算法 一个基础的噪声函数的入参通常是一个点坐标(这个点坐标可以是二维的、三维的,甚至N维),返回值是一个浮点数值:noise(vec2(x,y))。...细胞噪声; 梯度噪声 (Gradient Noise) 梯度噪声产生的纹理具有连续性,所以经常用来模拟山脉、云朵等具有连续性的物质,该类噪声的典型代表是Perlin Noise。...,使用smoothstep()方法,平滑网格边界,最终得到当前片元的噪声值。...噪声贴图实践 在WebGL中使用噪声贴图通常有两种方法: 读取一张静态noise图片的噪声值; 加载noise程序,切换着色器中运行它 前者不必多说,适用于静态纹理材质,后者适用于动态纹理,以下主要介绍后者的实现...这里将通过实现如上图球体的纹理贴图效果,为了简化代码,我使用Three.js来实现。

    2.7K30

    跟我学万字长文:最前沿的特征可视化(CAM)技术

    例如可以使用Opencv 函数转换: img_color = cv2.applyColorMap(img_gray, cv2.COLORMAP_JET) # 将灰度图转化为伪色彩图,...另外,因为热图关心的是对分类有正面影响的特征,所以加上了relu以移除负值。其实并不一定要是分类问题,只要是可求导的激活函数,在其他问题也一样使用Grad-CAM。特征融合权重计算公式如下: ?...为需要可视化的目标特征图。论文里证明了grad-CAM是上文利用GAP一般形式,这里不再复述,具体可看论文附录。这里提出两个问题并进行论述。 「A....本文摒弃了利用梯度获取特征权重的做法,作者认为: 对于深度神经网络,梯度可能是存在噪声的,并存在饱和问题。...论文实验表明, 该方法是优于grad-CAM的. ? 后记 本文针对CAM的两种方式gradient-based和gradient-free进行了梳理,由于水平问题,可能有些地方理解不特别到位。

    3K10

    【深度学习基础】线性神经网络 | 线性回归的从零开始实现

    我们使用线性模型参数 \mathbf{w} = [2, -3.4]^\top 、 b = 4.2 和噪声项 \epsilon 生成数据集及其标签: \mathbf{y}= \mathbf{X} \mathbf...在下面的代码中,我们定义一个data_iter函数,该函数接收批量大小、特征矩阵和标签向量作为输入,生成大小为batch_size的小批量。每个小批量包含一组特征和标签。...注意,上面的 \mathbf{Xw} 是一个向量,而 b 是一个标量。回想一下广播机制:当我们用一个向量加一个标量时,标量会被加到向量的每个分量上。...在机器学习中,我们通常不太关心恢复真正的参数,而更关心如何高度准确预测参数。幸运的是,即使是在复杂的优化问题上,随机梯度下降通常也能找到非常好的解。...其中一个原因是,在深度网络中存在许多参数组合能够实现高度精确的预测。 小结 我们学习了深度网络是如何实现和优化的。在这一过程中只使用张量和自动微分,不需要定义层或复杂的优化器。

    9210

    Procedural Noise Adversarial Examples for Black-Box Attacks on Deep Neural Networks论文笔记(1)

    这种攻击形式揭露了神经网络对于Perlin噪声的脆弱性, Perlin噪声是一种程序性噪声(Procedural Noise), 一般用于生成真实的纹理, 使用Perlin噪声可以实现对所有的分类器都实现...这里的odds应该是指softmax后的整个概率向量 通常来说, 黑盒攻击使用两种方法: 通过估计目标函数的梯度 使用对抗样本的可转移属性(transferability property) 构造者通常都要对机器学习系统进行大量的请求...该文的方法依赖于一个减少控制噪声生成的参数的优化, 提出使用贝叶斯优化(Bayesian optimization), 这个优化已经被证明是对于黑盒优化有效的方法, 它通过考虑目标函数的估计的不确定性来减少了函数的数目...提出了黑盒优化的贝叶斯优化方法, 用来学习Perlin噪声的参数, 使用很少的迭代次数就可以制造出成功的对抗样本 和通用的扰动类似, 展现了一个通过我们的perlin噪声生成的单扰动能够实现许多成功的攻击对于大量的数据点集合而言...)的黑盒攻击的基础 Szegedy等人提出来最小化攻击, 做出最小化的扰动来实现攻击, 使用L-BFGS来解决优化问题 C.

    1.2K30

    用噪声,做视觉艺术家

    云朵、山脉、泥土、树木都是大自然的鬼斧神工,但如何使用计算机模拟出这些自然界的纹理呢?你可能猜不到,我们可以通过噪声来实现。噪声,是一种图像算法,主要用来模拟生成各种纹理。...艺术家的作品(图片来自 https://northloop.org/event/black-history-month/) Perlin 噪声的发明者 Ken Perlin 在 1980年的时候被安排给电影...确定性随机 还有一种随机函数,其返回值是随机的,但是每次刷新页面,会得到相同的结果曲线,这种则被称为确定性随机,也称伪随机。 如何得到一个确定性随机函数呢? ...这里演示一种很简单的方法:使用sin函数,通过提高sin函数的频率,得到一个伪随机函数。...将噪声映射到物体的材质 如何得到一个噪声 1. 一维噪声 第一步:获取一些离散的随机值。

    59320

    AIGC在游戏开发中的革命性潜力-自动生成内容与智能化NPC

    在此部分,我们将通过代码实例,展示如何使用Python和深度学习技术生成基础的游戏内容。1....以下代码示例展示了如何使用Q-learning算法训练一个简单的NPC,在游戏环境中学习如何完成特定的任务:import numpy as npimport random# 游戏环境的状态数与动作数n_states...基于噪声生成地形Perlin噪声是一种常用的程序生成地形的技术,特别适用于生成自然环境如山脉、海洋、森林等。...以下代码展示了如何使用Perlin噪声生成基本的2D地形图,这一技术常用于生成开放世界游戏中的地图。...地图与关卡自动生成:利用程序生成技术,特别是Perlin噪声等算法,AIGC能够自动生成大规模的游戏地图和复杂的关卡,减少手动设计的时间成本,并增加游戏的重复可玩性。

    21220

    【他山之石】13个你一定要知道的PyTorch特性

    它是一个具有很大灵活性的深度学习框架,使用了大量的实用工具和函数来加快工作速度。PyTorch的学习曲线并不是那么陡峭,但在其中实现高效和干净的代码可能会很棘手。...有时,你的模型或损失函数需要有预先设置的参数,并在调用forward时使用,例如,它可以是一个“权重”参数,它可以缩放损失或一些固定张量,它不会改变,但每次都使用。...(或者一般来说:p范数)的问题时,请记住torch.cdist。..., 0.7172], [0.6480, 0.7143, 1.0000, 0.7312], [0.6789, 0.7172, 0.7312, 1.0000]]) 07 归一化向量...: F.normalize 最后一点仍然与向量和距离有松散的联系,那就是归一化:通常是通过改变向量的大小来提高计算的稳定性。

    76820

    【词向量】 噪声对比估计加速词向量训练

    广义的,词向量也可以应用于普通离散特征。词向量的学习通常都是一个无监督的学习过程,因此,可以充分利用海量的无标记数据以捕获特征之间的关系,也可以有效地解决特征稀疏、标签数据缺失、数据噪声等问题。...在词向量任务中,我们向大家展示如何使用Hierarchical-Sigmoid 和噪声对比估计(Noise Contrastive Estimation,NCE)来加速词向量的学习。...什么是噪声对比估计 噪声对比估计是一种基于采样思想的概率密度估计准则,用于估计/拟合:概率函数由非归一化的分值函数和归一化因子两部分构成,这样一类特殊的概率函数[1] 。...噪声对比估计通过构造下面这样一个辅助问题避免在全词典空间计算归一化因子 Z ,从而降低计算代价: 给定上下文 h 和任意已知的噪声分布 Pn ,学习一个二类分类器来拟合:目标 ω 来自真实分布 Pθ (...式(5)便是基于噪声对比估计而定义的NCE损失函数,至此,我们还剩下两个问题: 1. 式(5)中的 sθ(w,h) 是什么? - 在神经网络的实现中,sθ(h,ω) 是未归一化的分值。

    1.8K70

    13个你一定要知道的PyTorch特性

    它是一个具有很大灵活性的深度学习框架,使用了大量的实用工具和函数来加快工作速度。PyTorch的学习曲线并不是那么陡峭,但在其中实现高效和干净的代码可能会很棘手。...有时,你的模型或损失函数需要有预先设置的参数,并在调用forward时使用,例如,它可以是一个“权重”参数,它可以缩放损失或一些固定张量,它不会改变,但每次都使用。...Pairwise distances: torch.cdist 下次当你遇到计算两个张量之间的欧几里得距离(或者一般来说:p范数)的问题时,请记住torch.cdist。...归一化向量: F.normalize 最后一点仍然与向量和距离有松散的联系,那就是归一化:通常是通过改变向量的大小来提高计算的稳定性。...看看梯度流是如何保存的: F.interpolate(to_tensor(img).unsqueeze(0).requires_grad_(), mode="bicubic

    1.1K70

    一文入门个性化联邦推荐系统

    LeakyReLU函数 attention = self.leakyrelu(torch.matmul(a_input, self.a)).squeeze(-1) 应用softmax函数归一化注意力系数...如果是,则计算邻居和物品的图注意力输出,然后将注意力分数与各自的关系向量连接并通过参数c进行转换。之后,使用softmax函数来规范化这些分数,得到每种连接的权重。...# 清零模型当前的梯度 self.model.zero_grad() # 反向传播损失 loss.backward() # 使用差分隐私技术对模型参数的梯度进行噪声添加...) model_grad.append(grad) # 对物品嵌入向量的梯度进行噪声添加 item_grad = self.LDP(embedding_item.grad...# 对用户嵌入向量的梯度进行噪声添加 user_grad = self.LDP(embedding_user.grad[returned_users, :]) # 将模型梯度、物品梯度

    22510

    《Scikit-Learn与TensorFlow机器学习实用指南》 第16章 强化学习(上)

    另一个例子是当观测是有噪声的的,在这种情况下,通常你想用过去的观察来估计最可能的当前状态。因此,CartPole 问题是简单的;观测是无噪声的,而且它们包含环境的全状态。...我们的方法就是简单地将每个梯度向量乘以相应的动作得分。 最后,计算所有得到的梯度向量的平均值,并使用它来执行梯度下降步骤。 让我们使用 TensorFlow 实现这个算法。...让我们把所有的梯度放在一个列表中,以便方便地获得它们的值: gradients = [grad for grad, variable in grads_and_vars] 好,现在是棘手的部分。...这意味着对于每一个梯度向量我们需要一个占位符。此外,我们必须创建操作去应用更新的梯度。为此,我们将调用优化器的apply_gradients()函数,该函数接受梯度向量/变量对的列表。...在运行了这 10 次之后,我们使用discount_and_normalize_rewards()函数计算动作得分;我们遍历每个可训练变量,在所有次数和所有步骤中,通过其相应的动作分数来乘以每个梯度向量

    48731

    深入理解与实践:Softmax函数在机器学习中的应用

    本篇博客将以实践为主线,结合代码案例详细讲解Softmax的数学原理、在不同场景中的应用、以及如何优化Softmax的性能,帮助你全面掌握这个关键工具。1. 什么是Softmax函数?...Softmax是一种归一化函数,它将一个任意的实数向量转换为一个概率分布。给定输入向量 z=[z1,z2,…,zn],Softmax的定义为:其主要特点有:输出总和为1:可以理解为概率分布。...Softmax的核心应用2.1 多分类任务在多分类问题中,Softmax通常用于将模型的最后一层输出转化为概率分布,预测每个类别的可能性。场景:图片分类、文本分类等任务。...输出:一个长度为分类类别数的向量,表示每个类别的概率。2.2 注意力机制Softmax函数在注意力机制中用于计算注意力权重,从而突出输入中重要的部分。...import numpy as np def softmax(logits): """ 手写Softmax函数 :param logits: 输入向量(未经归一化的分数) :return

    20010

    最全Normalization!建议收藏,面试必问!

    同样,使用了 之后,可以使得权值不会很大,不会有梯度爆炸的问题。...在实际应用中,解决不同的问题原则上需要设计不同的归一化操作,并没有一个通用的归一化方法能够解决所有应用问题; 第二,一个深度神经网络往往包含几十个归一化层,通常这些归一化层都使用同样的归一化操作,因为手工为每一个归一化层设计操作需要进行大量的实验...也是和样本量无关的,所以可以应用在 较小以及 等动态网络中;另外 使用的基于 的归一化统计量代替全局统计量,相当于在梯度计算中引入了噪声。...而 则没有这个问题,所以在生成模型与强化学习等噪声敏感的环境中 的效果也要优于 。...论文中给出的算法是这样的: 那么,当知道单位主特征向量之后,如何求出最大的特征值 。 同样,我们可以得到: 具体的代码实现过程中,可以随机初始化一个噪声向量代入公式 (13) 。

    83630

    归一化 Normalization 的发展历程

    注意,在 PyTorch 中冻结 BN Layer,不仅需要对将其参数的 requires_grad 设为 False,还需要将该层的 training 设为 False,即调用 eval 函数;否则,...Normalization,并指出:相较于 BN,WN 摆脱了对于 Batch 的依赖,这意味这 WN 完全可以用在 RNN 网络中(如:LSTM )以及对于噪声敏感的任务(如:强化学习、生成式模型)...与 BN 不同的是, WN 并不是对输入的特征数据进行归一化操作,而是对神经网络中指定的层的参数做归一化操作。 在论文中,作者将神经网络的层表示为 ? ,其中, ? 为权重向量, ?...为输入向量, ? 为非线性激活函数。而 WN 就是对 ? 做归一化,将 ? 分解为 ? 。其中, ? 为单位向量,代表 ? 的方向, ? 为标量,代表 ?...故,作者提出了 IN,在 Channel 层面对输入数据进行归一化,再使用目标图像的 Channel 的均值与方差对结果进行 '去归一化'。

    88020
    领券