【pytorch】pytorch学习笔记(续5)

本文介绍了RNN的权值共享和考虑上下文特性,重点讨论了LSTM如何缓解梯度离散问题,以及GAN(包括DCGAN)的原理和训练稳定性。还探讨了如何实现1-Lipschitz函数和使用WassersteinDistance作为评估指标。
摘要由CSDN通过智能技术生成

p66,67:RNN:1.权值共享:减少网络中的参数量。

2.考虑上下文语境信息:用一个单元把上文信息记录下来,在计算当前层的h时,不仅要考虑当前层的输入,还要考虑上一层的h。

h0一般初始化为零向量。

p68:1.

2.RNN在空间上的层数不会像CNN一样那么长,一般会控制在2-10层之间。

3.使用nn.RNN初始化的参数:有3个,input_size:embedding的维度;hidden_size:记忆单元h的维度;num_layers:层数,默认是1,可以设置为2,4,...

4.h是每个记忆单元的信息,而out是所有输出的一个聚合。

p69:1.pytorch实现RNN:

2.对比多层RNN和1层RNN,h的层数变多了,但out不会变,因为out只取最后一层。

h:最后一个时间戳时的所有memory上的状态。

out:所有时间戳上的最后一个点的memory状态。

3.初始化RNN的另一种方法:参数同前一种方法。

(1)

(2)nn.RNNCell每次输入的是xt,且nn.RNNCell没有自动更新ht的操作;

而nn.RNN每次输入的是x,且nn.RNN有自动更新ht的操作。

(3)pytorch实现:

p70:1.预测正弦波:

(1)样例数据:

(2)网络:

(3)train:

(4)predict:

p71:1.梯度爆炸(Gradient Exploding):本来梯度在慢慢减小,突然间梯度变得很大。

(1)解决方案:每一次计算的时候都检查一下w的梯度信息,如果梯度>阈值,则用当前梯度除以当前梯度的模(方向保持不变),然后再乘阈值,这样就将梯度缩放到了阈值范围内。

pytorch实现:

先用for循环人工查阅一下是否出现了梯度爆炸的情况,如果出现了则对每一个p做一个缩放。

(2)一般梯度在10以内是比较正常的,100就比较大了。

2.梯度离散:由于梯度->0,参数长时间得不到更新,模型效果也不好。

p72,73:1.LSTM在一定程度上减少了梯度离散的出现。

表示信息过滤,表示简单的信息融合。

(1)第一道门

(2)第二道门:

注意:!=xt

(3)

(4)第三道门:

(5)理解三道门的另一种方式:

3.如何减轻梯度离散?:

将原本的梯度=Whhk变成了梯度=四项累加的和,大大减少了梯度特别小的情况的出现概率,从而有效减轻了梯度离散。

p74:1.nn.LSTM:

(此处的c表示记忆单元,等价于nn.RNN中的h,这里的h表示输出。此外,这里的c和h的形状是一样的。)

2.nn.LSTMCell:初始化参数同nn.LSTM。

(当h/c的层数为1时,可省略不写。)

(两层的情况)

p75:1.情感分类实战:

(1)推荐一个免费在线实验环境(gpu):

(2)加载数据:

(3)网络:

(4)embedding:

(5)train:

(6)test:

(感觉不太懂)p76,77,78,79,80,81,82

1.GAN(无监督)

G:生成器;D:判别器。

(3)固定G,找到D的最优解。(令导数为0)

结论:当鉴别师(D)达到最优(D*)时,画家(G)经过训练也能达到最优(即达到和真实水平一样的水平,即pr=pg)

(不太懂)2.DCGAN:

将较小的一幅图变成较大的一幅图的方法有:(1)padding;(2)transposed convolution。

3.GAN训练不稳定的问题:

(1)产生原因:

公认的一个前提:在G没有训练的时候(即刚开始的时候),pr和pg是几乎没有重叠(overlap)的。

(不懂)

结论:只要!=0,即p和q不重叠,那么DKL一定是正无穷大,DJS一定是log2。

(2)解决办法:

1)离散情况下:可以用从P到Q需要的步数来衡量P和Q之间的相似度,步数越小相似度越高。

(针对离散的情况)

公式:

2)连续情况下:公式:

Wasserstein Distance(也叫Earth Move Distance,EM距离)。

p83:1.如何实现1-Lipschitz function?:

(1)weight clipping:不好

(2)WGAN-Gradient Penalty:好

2.WGAN的好处:

(1)更稳定;(2)可以用Wasserstein Distance来衡量两个分布之间的距离。


终于结束了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值