rnn

tensorflow打印内部张量

匿名 (未验证) 提交于 2019-12-03 00:19:01
1. training_decoder_output 保存了 dynamic_decoder 过程的结果,其形式为 tuple(rnn_output,sample_id) traing_logits 获取了 training_decoder_output 中的 rnn_output k1 获取 shape,k2 获取具体 traing_logits ֵ training_decoder_output, _, _ = tf.contrib.seq2seq.dynamic_decode(training_decoder, impute_finished=True, maximum_iterations=max_target_sequence_length) training_logits = tf.identity(training_decoder_output.rnn_output, 'logits') k1=tf.shape(training_logits) k2=training_logits 2.在 Session 中, feed 数据,并打印 training_logits 的值 m1,m2=sess.run([k1,k2],{input_data: sources_batch, targets: targets_batch, lr: learning_rate,

self-attention

匿名 (未验证) 提交于 2019-12-03 00:11:01
RNN不容易被平行化,先计算得到b1,再计算得到b2,再b3,再b4 Self-attention输入和输出也和RNN一样都是sequence,每一个输出和Bi-RNN一样,都由所有的输入序列得到。但是不同之处在于输出是同时得到的,不需要再按照顺序得到。 每一个q和所有k做一次attention得到对应的值。 把值经过softmax: 得到α^与对应的v相乘,再累加得到b,可以看到b是把所有的输入值都利用到了。 要得到b2:只需要用q2与每一个k做乘积: 矩阵表示: 但是这个网络没有关于输入的位置信息,它不考虑哪一个和它更近,哪一个更远。所以在得到的ai还要加上一个代表位置信息的值ei 等同于是我把xi后面接一个pi,pi代表目前的xi处于哪个位置: 但是Wp是手动设置的: 对于Seq2seq我们是直接把里面的RNN部分给取代掉,都变成self-attention: 来源:51CTO 作者: 小白的颠覆之路 链接:https://blog.csdn.net/qq_20739243/article/details/101108298

GAE―图自编码器/Graph RNN/Graph RL

匿名 (未验证) 提交于 2019-12-03 00:03:02
图自动编码器(GAE) 自编码器(AE)和变分自编码器(VAE)广泛应用于无监督学习中,它们适用于学习无监督信息的图节点表示。下表总结了本文所研究的GAE主要特征: 不同GAE之间的比较 可以看到,在本文所研究的10种GAE方法中,7种属于自编码器(AE)、3种属于变分自编码器(VAE)。 每种方法采用的 降维方法 也有所不同,主要包括 L2-Reconstruction 、 拉普拉斯特征映射(Laplacian Eigenmap)、递归Reconstruction、排序、GAN 等等。 在可扩展性、节点特征以及其它改进方面也各不相同。除了上述两个主要分类外,也有一些进展值得讨论。 首先是对抗性训练方案,尤其是生成对抗网络(GAN),这是最近机器学习领域的一个热门话题。 GAN的基本思想是构建两个相关联的模型,一个判别器和一个生成器。生成器的目的是通过产生假数据来“欺骗”判别器,判别器的目的是区分样本是真实数据还是由生成器产生的假数据。然后,两个模型可以通过极大极小博弈进行联合训练,从而相互受益。 S. Pan等人 [83]将对抗训练方案作为一个额外的正则化项纳入GAE。整个架构如图9所示。具体来说,编码器用作生成器,判别器的目的是区分潜在表示是来自生成器还是来自先验分布。这样,自动编码器就被强制匹配先验分布以作为正则化。 除了前面提到的半监督方法和无监督方法之外

tensorflow框架学习 (十)―― tensorboard的LSTM

匿名 (未验证) 提交于 2019-12-03 00:03:02
这里不介绍RNN与RNN的特殊情形LSTM,因为内容过多。 一、相关函数介绍 1、创建Cell: tf.nn.rnn_cell.BasicRNNCell(num_units) num_units:创建的神经元个数。 2、创建由 RNNCell cell 指定的递归神经网络,执行 inputs 的完全动态展开(即对单个Cell执行动态展开): tf.nn.dynamic_rnn( cell, inputs, sequence_length=None, initial_state=None, dtype=None, parallel_iterations=None, swap_memory=False, time_major=False, scope=None ) cell:RNNCell的一个实例.。 inputs:RNN输入.如果time_major == False(默认),则是一个shape为[batch_size, max_time, ...]的Tensor,或者这些元素的嵌套元组.如果time_major == True,则是一个shape为[max_time, batch_size, ...]的Tensor,或这些元素的嵌套元组.这也可能是满足此属性的Tensors(可能是嵌套的)元组.前两个维度必须匹配所有输入,否则秩和其他形状组件可能不同.在这种情况下

TensorFlow2.0教程24:使用RNN实现文本分类

匿名 (未验证) 提交于 2019-12-03 00:01:01
  1.使用tensorflow_datasets 构造输入数据   !pip install -q tensorflow_datasets   [31mspacy 2.0.18 has requirement numpy>=1.15.0, but you'll have numpy 1.14.3 which is incompatible.[0m   [31mplotnine 0.5.1 has requirement matplotlib>=3.0.0, but you'll have matplotlib 2.2.2 which is incompatible.[0m   [31mplotnine 0.5.1 has requirement pandas>=0.23.4, but you'll have pandas 0.23.0 which is incompatible.[0m   [31mneo4j-driver 1.6.2 has requirement neotime==1.0.0, but you'll have neotime 1.7.2 which is incompatible.[0m   [31mmizani 0.5.3 has requirement pandas>=0.23.4, but you'll have pandas 0.23.0 which

RNN

匿名 (未验证) 提交于 2019-12-02 23:57:01
Ŀ¼ 1. 为什么需要RNN 2. LSTM的结构 3. LSTM网络 4. RNN 的评估 5. RNN的应用 6. Attention-based model 1. 为什么需要RNN? 传统的神经网络,一个输入会对应一个输出,如果输入不变,那输出也不会变。如下,一个Tappei是属于目的地类的,但换一句话又属于出发地类。这个时候就需要神经网络具有记忆功能。 实际上,循环神经网络是一类神经网络,一类具有记忆功能的神经网络。一类把上一个训练的结果带到下一次训练的神经网络 这就是一个简单的RNN,它有一个隐层,这个隐层的输出会被带到下一次训练中,和下一次训练的输入数据共同作为网络的输入 这是一个双向的RNN,这样的好处是不仅可以看到上文,还可以看到下文 2. LSTM的结构 下面,LSTM隆重登场! LSTM是一种RNN, 实际上,现在大家讲在做RNN的时候,其实他们指的就是在做 LSTM。 LSTM已经成为了一种标准。 这是LSTM的一个Memory Cell, 也就是一个单元: LSTM的一个memory cell 一共有4个输入,一个输出。 这种网络结构的好处就是 可以控制一个词是否应该输入,上一个词的信息是否应该被遗忘以及是否应该输出 这是一个LSTM的栗子: //篇幅原因,还有几幅图就不展示了,可以前往李老师的RNN part I 的ppt里面查看。 3. LSTM网络

Recurrent neural network (RNN) - Pytorch版

匿名 (未验证) 提交于 2019-12-02 23:56:01
import torch import torch . nn as nn import torchvision import torchvision . transforms as transforms # 配置GPU或CPU设置 device = torch . device ( 'cuda' if torch . cuda . is_available () else 'cpu' ) # 超参数设置 sequence_length = 28 input_size = 28 hidden_size = 128 num_layers = 2 num_classes = 10 batch_size = 100 num_epochs = 2 learning_rate = 0.01 # MNIST dataset train_dataset = torchvision . datasets . MNIST ( root = './data/' , train = True , transform = transforms . ToTensor (),# 将 PIL Image 或者 ndarray 转换为 tensor ,并且归一化至[ 0 - 1 ],归一化至[ 0 - 1 ]是直接除以 255 download = True ) test_dataset = torchvision

机器翻译

蓝咒 提交于 2019-12-02 23:49:02
机器翻译 本教程源代码目录在 book/machine_translation ,初次使用请您参考 Book文档使用说明 。 # 说明 硬件要求 本文可支持在CPU、GPU下运行 对docker file cuda/cudnn的支持 如果您使用了本文配套的docker镜像,请注意:该镜像对GPU的支持仅限于CUDA 8,cuDNN 5 文档中代码和train.py不一致的问题 请注意:为使本文更加易读易用,我们拆分、调整了train.py的代码并放入本文。本文中代码与train.py的运行结果一致,如希望直接看到训练脚本输出效果,可运行 train.py 。 # 背景介绍 机器翻译(machine translation, MT)是用计算机来实现不同语言之间翻译的技术。被翻译的语言通常称为源语言(source language),翻译成的结果语言称为目标语言(target language)。机器翻译即实现从源语言到目标语言转换的过程,是自然语言处理的重要研究领域之一。 早期机器翻译系统多为基于规则的翻译系统,需要由语言学家编写两种语言之间的转换规则,再将这些规则录入计算机。该方法对语言学家的要求非常高,而且我们几乎无法总结一门语言会用到的所有规则,更何况两种甚至更多的语言。因此,传统机器翻译方法面临的主要挑战是无法得到一个完备的规则集合[ 1 ]。 为解决以上问题,统计机器翻译

LSTM比较RNN

匿名 (未验证) 提交于 2019-12-02 23:43:01
LSTM只能避免RNN的梯度消失(gradient vanishing),但是不能对抗梯度爆炸问题(Exploding Gradient)。 梯度膨胀(gradient explosion)不是个严重的问题,一般靠裁剪后的优化算法即可解决,比如gradient clipping(如果梯度的范数大于某个给定值,将梯度同比收缩)。 梯度剪裁的方法一般有两种: 1.一种是当梯度的某个维度绝对值大于某个上限的时候,就剪裁为上限。 2.另一种是梯度的L2范数大于上限后,让梯度除以范数,避免过大。

pytorch之 RNN 参数解释

五迷三道 提交于 2019-12-02 19:27:19
总述: 第一次看到这个函数时,脑袋有点懵,总结了下总共有五个问题: 1.这个input_size是啥?要输入啥?feature num又是啥? 2.这个hidden_size是啥?要输入啥?feature num又是啥? 3.不是说RNN会有很多个节点连在一起的吗?这怎么定义连接的节点数呢? 4.num_layer中说的stack是怎么stack的? 5.怎么输出会有两个东西呀output,hn pytorch中RNN的一些参数,并且解决以上五个问题 1.Pytorch中的RNN 2.input_size是啥? 说白了input_size无非就是你输入RNN的维度,比如说NLP中你需要把一个单词输入到RNN中,这个单词的编码是300维的,那么这个input_size就是300.这里的input_size其实就是规定了你的输入变量的维度。用f(wX+b)来类比的话,这里输入的就是X的维度。 3.hidden_size是啥? 和最简单的BP网络一样的,每个RNN的节点实际上就是一个BP嘛,包含输入层,隐含层,输出层。这里的hidden_size呢,你可以看做是隐含层中,隐含节点的个数。 那个输入层的三个节点代表输入维度为3,也就是input_size=3,然后这个hidden_size就是5了。当然这是是对于RNN某一个节点而言的,那么如何规定RNN的节点个数呢? 4.如何规定节点个数