tensorflow
xuesuoziluoshu
攀援的井蛙
展开
-
TensorFlow Seq2Seq模型样例:中英文翻译
训练中途周末被人强制断电,仅保存了训练到一半的模型,用来做一波测试,效果好于预期,当然,现在还是个智障。预测代码如下,注释已经很详尽了,做个备注,用于学习。# coding: utf-8"""@ File: Seq2Seq_inference.py@ Brief: 翻译模型预测程序,使用训练完成的 checkpoint 数据"""import tensorflow as tfimport codecsimport sys# 设置参数# 读取 checkpoint 的路径,9000 表原创 2020-09-23 22:54:16 · 931 阅读 · 3 评论 -
TensorFlow Seq2Seq模型样例:实现语言翻译
没舍得用自己的电脑跑,训练用的机器比较垃圾,没有 GPU,很闹心,其间不同 IDE 调用了一次环境想用来测试一下中途训练效果,导致跑了两天的训练被打断,血的教训,不要再犯第二次。本次训练是用来 TED 的英语-中文翻译数据集,进行了相关的前处理,做了模型持久化,会隔一定 step 自动保存一次模型和训练结果。被打断时训练到 6200 步,输出的模型能够把句子说成人话了,虽然翻译准确性还比较差,预计 9000 步左右能稍好些吧。Seq2Seq 模型原理和训练结果待后续补充,在此先记录一下代码,若有感兴趣的原创 2020-09-17 22:32:37 · 407 阅读 · 2 评论 -
TensorFlow循环神经网络样例:预测语句下文——基于循环神经网络的神经语言模型
使用 TensorFlow 实现神经语言模型,自然语言建模可抽象为 embedding 层 + 循环神经网络层 + Softmax 层 的结构,可以看到,与循环神经网络相比,NLP应用中多了两个层:词向量层(embedding层)和Softmax层。鉴于犯懒,理论暂时不在此编辑,后续有时间再补充,只记录一下代码和结果。采用 PTB 数据集实现的训练过程,原始数据集需要经过前处理,犯懒暂时先不在此编辑,日后补充,有需要原始数据集和处理好的数据集的小伙伴可以留言。# coding: utf-8"""@原创 2020-09-16 21:50:51 · 270 阅读 · 0 评论 -
TensorFlow循环神经网络样例——预测 sin 函数
RNN 具有时序信息记忆能力,参考前向时间内的信息进行后向预测。 RNN 模型的提出也是为了解决时序预测问题。样例以 sin() 函数预测为例,音频信号等一维时序电子信号处理方式同理。# -*- coding: utf-8 -*-"""@ File: rnn_example_sin_predict.py@ Brief: 循环神经网络样例程序——预测 sin 函数@ Env: python 3.5 + TensorFlow 1.4.0, win10 + pycharm@ Author:原创 2020-09-13 13:56:56 · 494 阅读 · 0 评论 -
5.4.2 TensorFlow模型持久化——持久化原理及数据格式
5.4.1小节介绍了当调用saver.save函数时,TensorFlow程序会自动生成3个文件。TensorFlow模型的持久化就是通过这3个文件完成的。这一小节将详细介绍这3个文件中保存的内容以及数据格式。在具体介绍每一个文件之前,先简单回顾一下第3章中介绍过得TensorFlow的一些基本概念。TensorFlow是一个通过图的形式来表述计算的编程系统,TensorFlow程序中的所有计算都...原创 2020-06-07 22:51:15 · 115 阅读 · 0 评论 -
5.4.1 TensorFlow模型持久化——持久化代码实现
TensorFlow提供了一个非常简单的API来保存和还原一个神经网络模型。这个API就是tf.train.Save类。以下代码给出了保存TensorFlow计算图的方法。import tensorflow as tf #声明两个变量并计算它们的和v1=tf.Variable(tf.constant(1.0,shape=[1]),name="v1")v2=tf.Variable(tf.c...原创 2020-03-07 20:56:22 · 116 阅读 · 0 评论 -
5.3 变量管理(下)
tf.variable_scope函数生成的上下文管理器也会创建一个Tensorflow中的命名空间,在命名空间内创建的变量名称都会带上这个命名空间名作为前缀。所以,tf.variable_scope函数除了可以控制tf.get_variable执行的功能之外,这个函数也提供了一个管理变量命名空间的方式。以下代码显示了如何通过tf.variable_scope来管理变量的名称v1=tf.get_...原创 2020-03-07 12:03:53 · 119 阅读 · 0 评论 -
5.3 变量管理(上)
在简单神经网络中可以将计算前向传播结果的过程抽象成一个函数。通过这种方式在训练和测试过程中可以统一调用同一个函数来获得模型的前向传播结果,在5.2.1小节中这个函数定义为:def inference(input_tensor,avg_class,weights1,biases1,weights2,biases2):从定义中可以看到,这个函数的参数包含了神经网络中的所有参数。然而,当神经网络的...原创 2020-03-06 22:37:39 · 198 阅读 · 0 评论 -
MNIST数字识别问题之二——神经网络模型训练及不同模型结果对比
1.TensorFlow训练神经网络在神经网络的结构上,深度学习一方面需要使用激活函数实现神经网络模型的去线性化,另一方面需要使用一个或多个隐藏层使得神经网络结构更深,以解决复杂问题。在训练神经网络时,可以使用带指数衰减的学习率设置、使用正则化来避免过度拟合,以及使用滑动平均模型来使得最终模型更加健壮。以下代码给出一个在MNIST数据集上实现这些功能的完整TensorFlow程序。#codin...原创 2020-01-28 16:06:30 · 2151 阅读 · 0 评论 -
MNIST数字识别问题之一——MNIST数据处理
MNIST数据集是NIST数据集的一个子集,它包含了60000张图片作为训练数据,10000张图片作为测试数据。在MNIST数据集中的每一张图片都代表了0~9中的一个数字。图片大小都是28x28,且数字都会出现在图片正中间。下图展示了一张数字图片和它对应的像素矩阵。TensorFlow提供了一个类来处理MNIST数据,这个类会自动下载并转化MNIST数据的格式,将数据从原始的数据包中解析成训练...原创 2020-01-28 11:15:03 · 602 阅读 · 0 评论 -
深层神经网络小结
设计神经网络结构时的两个总体原则——非线性结构和多层结构:深度学习基本上就是深层神经网络的代名词,非线性结构和多层结构是解决复杂问题的必要方法,线性模型和浅层模型具有固有局限性。对于损失函数:神经网络是一个优化问题,而损失函数刻画了神经网络需要优化的目标。分类问题和回归问题有各自常用的损失函数,实践中又是也需要自己设计更加贴近实际问题需求的损失函数。不同损失函数对神经网络参数优化结果的影响不同。...原创 2020-01-27 15:59:09 · 156 阅读 · 0 评论 -
深层神经网络之四:神经网络进一步优化
1.学习率的设置学习率设置过大时参数将不会收敛,设定过小时虽然能保证收敛性,但是会大大降低优化速度。为解决设定学习率的问题,TensorFlow提供了一种更加灵活的学习率设置方法——指数衰减法。tf.train.exponential_decay函数实现了指数衰减学习率。通过这个函数,可以先使用较大的学习率来快速得到一个比较优的解,然后随着迭代的继续逐步减小学习率,使得模型在训练后期更加稳定。e...原创 2020-01-27 15:40:57 · 150 阅读 · 0 评论 -
深层神经网络之三:神经网络优化算法
本文将具体介绍如何通过反响传播算法(backpropagation)和梯度下降算法(gradient decent)调整神经网络中参数的取值。梯度下降算法主要用于优化单个参数的取值,而反向传播算法给出了一个高效的方式在所有参数上使用梯度下降算法,从而使神经网络模型在训练数据上的损失函数尽可能小。反向传播算法是训练神经网络的核心算法。本文略去反向传播算法具体的实现细节和数学证明,默认为已知,在此前...原创 2020-01-15 00:29:55 · 200 阅读 · 0 评论 -
深层神经网络之二:损失函数定义
1.经典损失函数监督学习所要解决的两大类问题为分类问题和回归问题。针对分类问题和回归问题有各自不同的经典损失函数。通过神经网络解决多分类问题最常用的方法是设置n个输出节点,其中n为类别的个数。对于每一个样例,神经网络可以得到一个n维数组作为输出结果。数组中每个维度(也就是每一个输出节点)对应一个类别。在理想情况下,如果一个样本属于类别k,那么这个类别所对应的输出节点的输出值应该为1,而其他节点...原创 2020-01-13 23:49:21 · 944 阅读 · 0 评论 -
深层神经网络之一:深度学习与深层神经网络
维基百科对深度学习的精确定义为“一类通过非线性变换对高复杂性数据建模算法的合集”。因为深层神经网络是实现“多层非线性变换”最常用的一种方法,所以在实际中基本可以认为深度学习就是深层神经网络的代名词。从维基百科给出的定义可以看出,深度学习有两个非常重要的特性——多层和非线性。那为什么要强调这两个性质?下面将给出详细解释。1.1线性模型的局限从这个例子可以看到,虽然这个神经网络有两层(不算输入层...原创 2020-01-13 21:30:51 · 362 阅读 · 0 评论 -
TensorFlow入门小结
TensorFlow中最基本的三个概念——计算图(tf.Graph)、张量(tf.Tensor)、会话(tf.Session)。计算图是TensorFlow的计算模型,所有TensorFlow的程序都会通过计算图的形式表示。计算图上的每一个节点都是一个运算,而计算图上的边则表示了运算之间的数据的传递关系。计算图上海保存了运行每个运算的设备信息(比如是通过CPU上还是GPU运行)以及运算之间的依赖...原创 2020-01-12 22:59:12 · 96 阅读 · 0 评论 -
神经网络参数与TensorFlow变量
在TensorFlow中,变量(tf.Variable)的作用就是保存和更新网络中的参数。与其它编程语言相似,TensorFlow中的变量也需要指定初始值。在神经网络中,给参数赋予随机初始值最为常见,所以也一般使用随机数给TensorFlow中的变量初始化。下面一段代码给出了一种在TensorFlow中声明一个2×3的矩阵变量的方法:weights=tf.Variable(tf.random_n...原创 2020-01-11 22:42:17 · 278 阅读 · 0 评论 -
用TensorFlow实现完整神经网络样例程序
该样例程序再模拟数据集上训练神经网络解决二分类问题。#coding=utf-8import tensorflow as tf #Numpy是一个科学计算工具包,这里通过Numpy工具包生成模拟数据集from numpy.random import RandomState#定义训练数据batch的大小batch_size=8#定义神经网络的参数w1=tf.Variable(tf...原创 2020-01-12 01:29:04 · 146 阅读 · 0 评论 -
TensorFlow运行模型----会话
会话拥有并管理TensorFlow程序运行时的所有走远。当所有计算完成之后需要关闭会话来帮助系统回收资源,否则就可能出现资源泄露的问题。TensorFlow中使用会话的模式一般有两种,第一种模式需要明确调用会话生成函数和关闭会话函数,这种模式的代码流程如下:#创建一个会话sess=tf.Session()#使用这个创建好的会话来得到关心的运算的结果。比如可以调用sess.run(result...原创 2020-01-10 00:30:10 · 239 阅读 · 0 评论 -
通过TensorFlow训练神经网络模型
监督学习最重要的思想就是,在已知答案的标注数据集上,模型给出的预测结果要尽量接近真实的答案。通过调整神经网络中的参数对训练数据进行拟合,可以使得模型对未知的样本提供预测的能力。在神经网络优化算法中,最常用的方法是反向传播算法(backpropagation)。反向传播算法的具体工作原理将在之后博文中详述,本文将主要介绍训练神经网络的整体流程及TensorFlow对于这个流程的支持。下图展示了使用...原创 2020-01-12 00:45:45 · 706 阅读 · 0 评论 -
前向传播算法的TensorFlow实现
本文主要介绍TensorFlow,神经网络前向传播算法具体算法细节默认为已知,在本文中不再赘述,后续可能将会在机器学习原理博文中展开叙述。本文以一个判断机器零件是否合格的三层神经网络为样例:该网络有两个输入:x1和x2,一个网络输出:y,W的上标表明了神经网络的层数,下标表明了连接节点编号。在这里假设权重是已知的,给定神经网络的输入,神经网络的结构以及边上的权重,就可以按照图示前向传播算法来...原创 2020-01-10 23:28:50 · 165 阅读 · 0 评论 -
TensorFlow数据模型----张量
张量的概念在TensorFlow程序中,所有的数据都是通过张量的形式来表示。从功能的角度上看,张量可以被简单理解为多维数组。其中零阶张量表示标量(scalar),也就是一个数;一阶张量为向量(vector),也就是一个一维数组;n阶张量可以...原创 2020-01-09 23:43:26 · 201 阅读 · 0 评论 -
TensorFlow计算模型--计算图
在这里插入代码片@TOC1.1计算图的概念 Tensor就是张量,TensorFlow中的张量可以简单理解成多维数组;Flow翻译成中文是“流”,直观表达了张量之间通过计算相互转化二等过程。TensorFlow是一个通过计算图形式来表述计算的编程系统:TensorFlow中的每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系。而为了建模的方便,TensorFlow会将常量...原创 2020-01-08 23:59:12 · 197 阅读 · 0 评论