首页 > 其他分享 >TensorFlow11.2 循环神经网络RNN-循环神经网络、RNN-layer实现

TensorFlow11.2 循环神经网络RNN-循环神经网络、RNN-layer实现

时间:2023-06-25 13:11:50浏览次数:44  
标签:RNN 语义 我们 神经网络 循环 100 80

循环神经网络

Sentiment Analysis(情感分析)
image
类似于淘宝的好评还是差评,我们比较直观的一个方法就是:
image
这里不好的是:
Downsides:
1.Long sentence

  • 100+ words
  • too much parameters[w,b]。

就是比如说我们有100个单词,会产生很多个w,b,参数太多了。
2.No context information(没有语义的相关性)

  • consistent tensor
    就是不如说一句话,我们把他的单词的顺序打乱那个模型也是可以处理的,所以说这里没有语义的相关性。

对于之前的全连接神经网络的参数过多我们使用了一种sharing,就是滑动窗口的方法来解决的。
这里我们也引入它的思想。
image
就是我们使用同一个线性层。
但是我们每一层需要考虑它的语义,所以我们在每一层都加上它的上一层的参数。
image
我们可以看出来这个h5已经累加了前面所有的参数,所以我们可以只使用最后一个语境h5进行后续的操作。
image
我们看这个图,其实这个o5可以反应前面的全部的语义。

image

就是每一层的输出,它还会做下一层的输入。其中\(x_t\)@\(w_{xh}\)+\(h_{t-1}\)@\(w_{hh}\)其中这个\(x_t\)是这一层的输入。\(h_{t-1}\)是上一个时间轴上面的状态。这个h-1就是之前所有的语境信息。然后这个新得的\(h_t\)作为下一个状态的语境。
image

然后就是我们需要求loss和Gradient
image
这里我们使用的是全局共享的思想,所以我们的参数只有两个\(W_{xh}\)和\(W_{hh}\)。所以我们更新的时候只需要更新这两个。
image

RNN Layer的实现

image

我们这里的储存的是[batch,seq len,feature len]假设等于[b,80,100],我们需要根据它的seqlen进行展开,就是一个[b,100]。经过操作之后[b,100]=>[b,64]这相当于一个降维的过程。

image
我们这里的SimpleRNN就是一个简单的RNN=>X\(W_{xh}\)_H\(W_{hh}\)。
image
然后我们这里:\(W_{xh}\)就是=[input,h],\(W_{hh}\)=[h,h]。我们的这个layers.SimpleRNNCell(3),其中这个3就是h.
image
这里我们返回的out和h1是一样的。
实现:
image
我们通过输出可以看出这个out和xt1[0]是一样的。
这里我们input=[4,80,100],我们需要按照80进行分类,然后就是for word in 80:,我们最后按照\(out_{80}\)作为后续的分类。
image
image

在这里我们通常取最后一层的最为前面语义的载体
image
整个的更新过程:
image
我们后续循环80次之后我们得到的一个out2(t=80),在做后续的分类。
我们真正实现的时候并不用这么复杂,只需要这样就行:
image

标签:RNN,语义,我们,神经网络,循环,100,80
From: https://www.cnblogs.com/lipu123/p/17502179.html

相关文章

  • TensorFlow11.1 循环神经网络RNN01-序列表达方法
    在自然界中除了位置相关的信息(图片)以外,还用一种存在非常广泛的类型,就是时间轴上的数据,比如说序列信号,语音信号,聊天文字。就是有先后顺序。对于下面这个:不如说我们输入有10个句子,每个句子都有4个单词,然后我们怎么把这些句子转化为具体的数值呢。如果一个表示方法能够很好的表示这......
  • 蔚来手撕代码题:三个线程循环打印ABC
    问题如下:https://www.nowcoder.com/discuss/493178141461041152思路分析三个线程交替打印ABC的实现方法有很多,我个人比较倾向于使用JUC下的CyclicBarrier(循环栅栏,也叫循环屏障)来实现,因为循环栅栏天生就是用来实现一轮一轮多线程任务的,它的核心实现思路如下图所示:Cycl......
  • TensorFlow10.4 卷积神经网络-ResNet与DenseNet及ResNet实战
    1ResNet我们是实验发现在我们堆叠更多的网络结构的时候,我们并不能又一个很好的结果,就是它网络层次变多了之后他会产生一个多层的loss的堆叠,使得梯度爆炸,或者梯度弥散。然后我们想了一个办法,就是我们比如说设置了一个30层的神经网络,我们在差也不能比22层的差。就是我们设置了一......
  • java循环
    whilewhile(){}do{}while();for(;;){}增强for循环for(声明语句:表达式){}publicclasszqfor{  publicstaticvoidmain(String[]args){​    int[]a={10,20,30,40,50};    for(intx:a){      System.out.println(x);   ......
  • 深度卷积神经网络(AlexNet)
    1.AlexNet\(2012\)年,\(AlexNet\)横空出世。使用\(8\)层卷积神经网络,赢得\(ImageNet\2012\)图像识别挑战赛。\(AlexNet\) 网络结构:1.1第一个卷积层卷积运算:原始数据为\(227\times227\times3\)的图像。卷积核尺寸\(11\times11\times3\),步长\(4\),每次......
  • 竖式正向循环输出a-z,逆向循环输出A-Z
    #include<iostream>usingnamespacestd;intmain(){chara[123];intj=90; for(inti=65;i<123;i++){ a[i]=i; } for(inti=97;i<123;i++){ cout<<a[i]<<""<<a[j]<<endl; j--; } return0; }......
  • U-Net: 专注生物医学分割的卷积神经网络(翻译)
    原文链接:https://arxiv.org/pdf/1505.04597.pdf摘要:普遍认为,优秀的深度神经网络离不开数千个标注训练样本。在本文中,我们提出了一种网络和训练策略:该策略通过使用大量数据增强,从而充分利用带标注的训练样本;该网络结构包括了用于捕获上下文的收缩路径和用于实现精确定位的对称扩......
  • TensorFlow10.4 卷积神经网络-batchnorm
    我们发现这个sigmoid函数在小于-4或者大于4的时候他的导数趋近于0。然后我们送进去的input的值在[-100,100]之间,这样很容易引起梯度弥散的现象。所以我们一般情况下使用ReLU函数,但是我们有时候又不得不使用sigmoid函数。这个时候我们在送到下一层的时候我们应该先经过Normalizatio......
  • TensorFlow10.3 卷积神经网络-经典卷积网络(VGG,GoogLeNet)
    LeNet-5这个是5层的,3个c+s,然后有两个全连接层。AlexNet这里有8(5+3)层。就是之前的技术没有现在的好,所以它用了两块GTX580,然后让你它的模型分成两块,然后在两块显卡中跑。很好的把显存给分开来了。VGG之前都是用\(11*11\)的窗口,然后它用了\(3*3\)的窗口,这个\(3*3\)的窗......
  • 【tensorflow】连续输入+离散输入的神经网络模型训练代码
    【tensorflow】连续输入+离散输入的神经网络模型训练代码离散输入的转化问题构造词典创建离散数据、转化字典索引、创建连续数据创建离散输入+连续输入模型训练输出全部代码-复制即用  查看本系列三种模型写法:  【tensorflow】连续输入的线性回归模型训练代码 ......