![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Tensorflow框架
文章平均质量分 69
空字符(公众号:月来客栈)
Talk is cheap, show me your code.
展开
-
RNN和LSTM中batchsize和timestep的区别是什么?
RNN和LSTM中batchsize和timestep的区别是什么?首先需要明确的概念是:batchsize指的是一次喂入网络的样本数,属于样本数量上的概念;而timestep指的是每个样本内包含有多少个时刻(步长),属于每个样本内部的概念。既然题主提出了这样的疑问,说明对于LSTM的细节之处尚有困惑之处,因此下面先大致说一下一个RNN和LSTM单元内部的参数情况,再以基于LSTM的MINIST手写体分类这个例子来说明。1 RNN和LSTM单元到底长啥样1.1 RNN单元以tensorflow中的实原创 2020-05-12 21:30:19 · 9622 阅读 · 7 评论 -
循环神经网络系列(三)Tensorflow中MultiRNNCell
循环神经网络系列(一) Tensorflow中BasicRNNCell循环神经网络系列(二)Tensorflow中dynamic_rnn经过前面两篇博文,我们介绍了如何定义一个RNN单元,以及用dynamic_rnn来对其在时间维度(横轴)上展开。我们今天要介绍的就是如何叠加多层RNN单元(如双向LSTM),同时对其按时间维度展开。具体多层RNN展开长什么样呢?还是用最直观的图来展示,如下所示...原创 2018-11-03 11:01:20 · 2234 阅读 · 4 评论 -
循环神经网络系列(二)Tensorflow中dynamic_rnn
1.回顾上一篇博文(循环神经网络系列(一)Tensorflow中BasicRNNCell)中我们介绍了在Tensoflow中,每个RNN单元的实现,以及对应各个参数的含义。自那之后,我们就能通过Tensorflow实现一个单元的计算了。import tensorflow as tfimport numpy as npx = np.array([[1, 0, 1, 2], [2, 1, 1...原创 2018-11-02 21:16:08 · 2272 阅读 · 1 评论 -
循环神经网络系列(四)基于LSTM的MNIST手写体识别
我们知道循环神经网络是用来处理包含序列化数据的相关问题,所有若要利用循环神经网络来解决某类问题,那么首先要做的就是将原始数据集序列化,然后处理成某个深度学习框架所接受的数据输入格式(比如Tensorflow).1.数据预处理我们知道MNIST数据集中的每张图片形状都是[28*28]的,那么如何将其序列化呢?想要知道怎么序列化,那还得从LSTM接受怎样的输入说起。由于前文我们说到,一个LS...原创 2018-11-05 10:49:05 · 1888 阅读 · 5 评论 -
循环神经网络系列(六)基于LSTM的唐诗生成
1. 思路这个示例在很多地方都出现过,对于学习理解LSTM的原理极有帮助,因此我们下面就来一步一步地弄清楚其中的奥秘所在!对于循环神经网络来说,我们首先需要做的仍旧是找到一种将数据序列化的方法。当然,对于古诗词来说,每个字的出现顺序就是天然的一个序列,因此我们就可以直接按照这个序列来处理。并且一首古诗词可以看成是一个样本(为了叙述方便,我们下面仅以一首诗的第一句为例子),例如[[床前明月光]...原创 2018-11-13 14:28:10 · 6843 阅读 · 2 评论 -
如何查看Tensoflow模型中已保存的参数
1.保存和读取1.1 保存import tensorflow as tfaa = tf.Variable(tf.random_normal(shape=[3, 4], dtype=tf.float32), name='var')saver = tf.train.Saver()with tf.Session() as sess: sess.run(tf.global_varia...原创 2018-11-11 11:39:27 · 1589 阅读 · 0 评论 -
循环神经网络系列(五)Tensorflow中BasicLSTMCell
1.结论照惯例,先上结论,再说过程,不想看过程的可直接略过。从这个图我们可以知道,一个LSTM cell中有4个参数,并且形状都是一样的shape=[output_size+n,output_size],其中n表示输入张量的维度,output_size通过函数BasicLSTMCell(num_units=output_size)获得。2.怎么来的?让我们一步一步从Tensorflo...原创 2018-11-12 18:37:33 · 3173 阅读 · 0 评论 -
循环神经网络系列(七)Tensorflow中ConvLSTMCell
前面一文我们简单得介绍了ConvLSTM得原理和应用场景,现在来看看在Tensorflow它具体是如何实现得。 值得一说得是Tensorflow在实现这个算法得时候并没有使用peepholes,即下面的红色部分,而是基于原始的LSTM网络结构改变的。不过在最后,我也会给出一个仿照Tensorflow实现的基于peepholes的ConvLSTM版本。1.用法在接受具体用法前,先来大致解释...原创 2018-11-20 21:04:42 · 9576 阅读 · 30 评论 -
tf.nn.conv2d 你真的会用么
问题背景:假如我现在有一个矩阵为image,卷积核为weight,卷积时不填充,则卷积后的结果为convimage =[[[[ 1. 2. 3. 4. 5.] [ 6. 7. 8. 9. 10.] [11. 12. 13. 14. 15.] [16. 17. 18. 19. 20.] [21. 22. 23. 24. 25.]] [[26. 27...原创 2018-12-26 21:20:56 · 2740 阅读 · 2 评论 -
使用Tensorflow搭建一个简单的Seq2Seq翻译模型
1.背景首先,这篇博文整理自谷歌开源的神经机器翻译项目Neural Machine Translation (seq2seq) Tutorial。如果你直接克隆这个项目按照Tutorial中的说明操作即可,那么也就不用再往下看了。而之所以写这篇博文的目的是,虽然Seq2Seq的原理并不太难,但是在用Tensorflow实现起来的时候却不那么容易。即使谷歌开源了源码,但是对于初学者来说面对复杂的...原创 2019-04-16 14:34:13 · 1896 阅读 · 0 评论 -
带注意力机制的Seq2Seq翻译模型
1.注意力机制原理上一篇博文介绍了如何使用Tensorflow来搭建一个简单的NMT模型,但那只是一个初级的模型。下面我们通过加入注意力机制(attention mechanism)来使得其变得更加高级一点。关于什么时注意力机制呢,笔者就按照谷歌NMT开源文档中的说明来简单介绍一下。首先,最初注意力是由Bahdanau等人在2015年提出的,紧接着Luong等人又对其进行了改进,然后就出现了很...原创 2019-04-18 09:18:56 · 2184 阅读 · 0 评论 -
tf.nn.conv3d应该这样用
1. 视觉角度我们首先先通过一张图来直观的看看2D与3D卷积的区别:从图p0116中(只包含一个卷积核)我们可以看出,对于:2D convolution: 使用场景一般是单通道的数据(例如MNIST),输出也是单通道,对整个通道同时执行卷积操作;2D convolution on multiple frames: 使用场景一般是多通道的数据(例如cifar-10),输出也是单...原创 2019-04-24 11:26:46 · 4724 阅读 · 2 评论 -
如何载入第三方词向量作为模型的参数进行训练并保存
如何载入第三方词向量作为模型的参数进行训练并保存目的:载入第三方词向量后接着训练微调,保存后能再次载入微调后的词向量训练或预测。例如:初始时候a=1,载入后被用作参数训练成a=3并保存;再次载入保存的模型时a就应该是上次训练后的结果3,而不再是1。示例1.import numpy as npimport tensorflow as tfload_embedding = np.arr...原创 2019-05-23 08:32:15 · 1694 阅读 · 0 评论 -
浅谈Attention注意力机制及其实现
1. 什么是注意力机制1.1 注意力机制的思想关于什么是注意力机制,粗略的描述就是“你正在做什么,你就将注意力集中在那一点上”。这种机制就和人脑在思考问题时一样。例如我们在思考将句子“我是一个学生”翻译成英文的时候,脑子中首先想到的就是“我”⟷\longleftrightarrow⟷ "I"的这样一种映射(而不是先想到其它部分),这就是注意力机制在人脑中的表现。即,我们在按词组依次翻译这句话的...原创 2019-06-03 16:01:26 · 4675 阅读 · 0 评论 -
利用Tensorboard进行可视化
真是出来混迟早是要还的,之前一直拒绝学习Tensorboard,因为实在是有替代方案,直到发现到了不得不用的地步。下面主要介绍一下怎么使用Tensorboard来可视化参数,损失以及准确率等变量。1.可视化计算图下面是一个单层网络的手写体分类示例:import tensorflow as tffrom tensorflow.examples.tutorials.mnist import i...原创 2019-06-28 20:05:27 · 864 阅读 · 0 评论 -
循环神经网络系列(一)Tensorflow中BasicRNNCell
按道理看完RNN的原理之后,我们就应该来用某种框架来实现了。可偏偏在RNN的实现上,对于一个初学者来说Tensorflow的表达总是显得那么生涩难懂,比起CNN那确实是差了一点。比如里面的参数就显示不是那么的友好。num_units到底指啥?原谅我最开始以为指的是RNN单元的个数。zero_state()中的参数为啥要指定batch_size?1.结论先回忆一下RNN的计算公式:output...原创 2018-10-30 16:34:38 · 2750 阅读 · 4 评论 -
Tensorflow 两层全连接神经网络拟合正弦函数
搞了这么就深度学习的你是不是也该来拟合一下sin(x)sin(x)sin(x)了。话说,如果连sin(x)sin(x)sin(x)也不能拟合,那还搞什么深度学习。1.网络结构网络结构很简单,如下图所示:2.制作数据集制作数据集的思路就是随机生成一个范围的xxx,然后带入到np.sin(x)计算出真实值yyy.def gen_data(): x = np.linspace(-np...原创 2018-09-26 08:59:58 · 3224 阅读 · 2 评论 -
tf.truncated_normal与tf.random_normal的区别
转自:https://blog.csdn.net/u013713117/article/details/65446361/tf.truncated_normal与tf.random_normal的作用都是从给定均值和方差的正态分布中输出变量。两者的区别在于tf.truncated_normal 截取的是两个标准差以内的部分,换句话说就是截取随机变量更接近于均值。 The generat...转载 2018-07-10 14:03:00 · 1553 阅读 · 0 评论 -
softmax_cross_entropy_with_logits & sparse_softmax_cross_entropy_with_logit区别
1.相同点两者都是先经过softmax处理,然后来计算交叉熵,并且最终的结果是一样的,再强调一遍,最终结果都一样。那既然有了softmax_cross_entropy_with_logits 这个方法,那么sparse_softmax_cross_entropy_with_logit 有何用?按照《TensorFlow实战Google深度学习框架》中的说法:在只有一个正确答案的分类问题中,...原创 2018-07-11 08:07:07 · 2722 阅读 · 0 评论 -
TensorFlow踩坑记(陆续上演……)已更新3记
1.TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, numpy ndarrays, or TensorHandles.For reference, 错误原因: TensorFlow中,在开始训练时...原创 2018-07-20 13:15:52 · 7119 阅读 · 1 评论 -
tf.cast\tf.argmax\tf.argmin
1. tf.cast()tf.cast()的作用是将一个张量的类型改变为另外一个类型,如第11行,将浮点型转化为整数型def cast(x, dtype, name=None): """Casts a tensor to a new type. The operation casts `x` (in case of `Tensor`) or `x.values` (in ...原创 2018-07-15 10:28:48 · 546 阅读 · 0 评论 -
Tensorflow的大致运行模式(思想)和占位符
为什么说是大致呢?作为一个初学者刚看TensorFlow没几天,所以也就是根据自己的理解来说说,所以只能是大致,并且很有可能还是错的,只是目前为止的个人见解。1. 运行模式TensorFlow翻译成中文就是张量流,所以TensorFlow至少代表着两个概念:“张量”和“流”。这儿不过多的追究张量,可以简单的把它理解成变量;关键要说的是“流”。怎么来说明这个“流”呢?我们先来看一段用py...原创 2018-07-15 14:12:52 · 682 阅读 · 0 评论 -
TensoFlow全连接网络MNIST数字识别与计算图
网上关于用TensorFlow实现MNIST的全连接神经网络有很多,大多都是《TensorFlow实战Google深度学习框架》书上的,当然我的也不例外。不过我是去掉了书中的滑动模型部分的代码,只保留了前项传播和训练两个部分。并且网上大多数都没用从计算图的角度总体绍一下,而这恰恰是理解用TensorFlow写神经网络的关键。1. MINIST全连接网络计算图下面首先从计算图的角度总体介绍一...原创 2018-07-15 16:43:55 · 628 阅读 · 0 评论 -
tf.pad()的使用
笼统来说,tf.pad()的作用是填充,其函数原型如下:def pad(tensor, paddings, mode="CONSTANT", name=None, constant_values=0):# tensor :指待填充张量# paddings :指用何种方式填充# comde :填充模式# constant_value :指定填充指其中当paddings的维度为2x...转载 2018-08-04 14:43:33 · 1104 阅读 · 1 评论 -
CNN英文垃圾邮件分类(卷积池化全连接)
1.思路有了前一篇对数据的预处理,我么将得到形如如下的预处理结果:print(x[:3][[ 1 2 3 4 5 6 1 7 8 9 10 11 12 13 14 9 15 5 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...原创 2018-08-14 10:05:22 · 1953 阅读 · 1 评论 -
使用多个不同尺寸的卷积核卷积后的全连接处理
1.背景如图,最左边部分是一个句子构成的2维矩阵(可以理解为通道为1的图片),其形状为shape=[7,5,1]。图中: 第一步:先用3个卷积核进行了卷积操作,即卷积核的形状分别为shape1=[4,5,1,2],shape2=[3,4,1,2],shape3=[2,4,1,2];卷积后的形状分别为[4,1,2],[5,1,2],[6,1,2];第二步:采用max pool进行池化操...原创 2018-08-06 20:09:02 · 10830 阅读 · 8 评论 -
CNN中文垃圾邮件分类(一)
整理自唐宇迪老师的视频课程,感谢他!1.思路对于中文垃圾邮件的分类,在CNN部分同前面介绍的英文垃圾邮件分类完全相同。而不同之处在于对数据的预处理上。由于英文自然而然的是用空格隔开的,所以对于中文来说,首先要做的就是分词。而对于分词后,就有两种处理方式:第一种,完全效仿英文的处理方式;建立词表,得到每封邮件中每个词在词表中的索引,然后随机初始化一个词向量矩阵,利用标签让它们自己训练...原创 2018-08-14 19:08:25 · 6959 阅读 · 6 评论 -
CNN中文垃圾邮件分类(二)
本文整理自唐宇迪老师视频,谢谢他!1.思路在上一篇博客CNN中文垃圾邮件分类(一)中介绍了两种预处理方式,现在来介绍第二种,先用分好词的数据作为训练语料,选择前n个词作为词表(或者去掉出现频率较低的词),然后先训练出每个词所代表的词向量。再根据词表得到每封邮件中每个词在词表中的索引,然后按索引取出向量量堆叠起来。2. 数据预处理第一步同之前一样,先去掉非中文的其它字符,然后分词...原创 2018-08-16 18:42:58 · 2729 阅读 · 3 评论 -
tensorflow.contrib.learn.preprocessing.VocabularyProcessor
今天要记录的是TensorFlow中的一个非常有用的函数,以前都是自己手动现在这一功能,没想到居然有现成的。它就是learn.preprocessing.VocabularyProcessor,其作用,用官方的一句话来说就是 Learn the vocabulary dictionary and return indexies of words.实现的功能就是,根据所有已分词好的文本建立好一个...原创 2018-08-17 08:45:43 · 5267 阅读 · 3 评论 -
tf.nn.conv2d 你不知道的那些事儿
在处理图像类的数据集的时候,每张图片通常是用一个向量存储的,那么此时问题就来了:当我们在reshape的时候,到底该怎么填写维度呢? 举个例子吧!现有两张RGB三通道的图片,假设第一张的三个通道对应的像素值矩阵如下,第二张将(48~95)同样按此排列。R=⎡⎣⎢⎢⎢0481215913261014371115⎤⎦⎥⎥⎥G=⎡⎣⎢⎢⎢16202428172125291822263019232...原创 2018-08-28 19:15:53 · 436 阅读 · 2 评论 -
TensorFlow中的Padding到底是怎么在填充?
1.结论在用tf.nn.conv2d()计算卷积的时候突然有一个疑问,当padding=SAME的时候Tensorflow内部到底是这么处理的。网上找了一圈没发现,都是说怎么计算卷积后的尺寸,没办法挨个试了一遍总结了padding的规律。下面先说结论,再说示例。符号及术语说明:[]表示取整,如[0.6]=0; ⌈⌉表示向上取整,如⌈0.6⌉=1 Tensorflow中paddi...原创 2018-08-29 17:17:31 · 2777 阅读 · 0 评论 -
Win10+Anaconda+Tensorflow CPU版本+Pycharm
本文介绍的是在Win10上如何通过Anaconda来安装Tensorflow环境1.安装Anaconda官网地址:https://www.anaconda.com/download/ 清华镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 建议安装Python3以上的版本,后面的安装方法也是基于3以上的。全部直...原创 2018-04-18 14:46:47 · 908 阅读 · 0 评论