python神经网络TensorFlow简介常用基本操作教程

目录

要将深度学习更快且更便捷地应用于新的问题中,选择一款深度学习工具是必不可少的步骤。
TensorFlow是谷歌于2015年11月9日正式开源的计算框架。TensorFlow计算框架可以很好地支持深度学习的各种算法。

TensorFlow很好地兼容了学术研究和工业生产的不同需求。

一方面,TensorFlow的灵活性使得研究人员能够利用它快速实现新的模型设计;

另一方面,TensorFlow强大的分布式支持,对工业界在海量数据集上进行的模型训练也至关重要。作为谷歌开源的深度学习框架,TensorFlow包含了谷歌过去10年间对于人工智能的探索和成功的商业应用。

除了TensorFlow,目前还有一些主流的深度学习开源工具可以使用。每个工具都有着各自的特点,可以根据自己的需求和喜好选择适合自己的深度学习工具。比如我一开始学习深度学习的时候接触的是Caffe,然后TensorFlow开源之后了解到了TensorFlow的一些特性,感觉还是更喜欢TensorFlow的风格,当然也考虑到会使用一种以上的深度学习工具也算见不错的事情。

其它一些主流的深度学习工具有:

Caffe: http://caffe.berkeleyvision.org/(Convolutional Architecture for Fast Feature Embedding) BVLC

MXNet: http://mxnet.readthedocs.io/en/latest/ (百度 DMLC(分布式机器学习社区) 简称”深盟”)

Torch: http://torch.ch/(Facebook Google DeepMind Twitter FAIR)

Theano: http://deeplearning.net/software/theano/(the LISA group at the University of Montreal(蒙特利尔))

TensorFlow: https://www.tensorflow.org/(Google)

CNTK(微软深度学习工具包 )

DeepLearning4J: http://deeplearning4j.org/

deepmat: https://github.com/kyunghyuncho/deepmat

Neon: http://neon.nervanasys.com/docs/latest/index.html

Eblearn: http://eblearn.sourceforge.net/

PyLearn: http://deeplearning.net/software/pylearn2/

chainer: https://github.com/pfnet/chainer

Bahrampour S, Ramakrishnan N, Schott L, et al. Comparative Study of Deep Learning Software Frameworks[J]. Computer Science, 2016.

这篇文章对现在流行的五个开源深度学习框架 caffe、Neon、TensorFlow、Theano、Torch 做了很严谨比较。作者开源了他们的比较 Benchmarks 代码:https://github.com/DL-Benchmarks/DL-Benchmarks

文章比较了:可扩展性(extensibility)、hardware utilization(硬件利用率)和速度(speed)三个方面

  • 评估测试都是部署在单机上,对于多线程 CPU、GPU(Nvidia Titan X)都进行测试
  • 速度评估标准包括了梯度计算时间(gradient computation time)、前向传播时间(forward time)对于卷积神经网络,作者还
  • 对这几个深度框架支持的不同的卷积算法以及相应的性能表现做了实验

通过实验得出了以下结论

  • Theano、Torch 是最具扩展性的深度学习框架
  • 在 CPU 上的测试性能来看,Torch 最优,其次是 Theano
  • 在 GPU 上的性能表现,对于大规模卷积以及全连接网络,还是 Torch 最优,其次是 Neon
  • Theano 在部署和训练 LSTM 网络中夺得拔筹caffe 是最容易测试评估性能的标准深度学习框架
  • 最后,TensorFlow 与 Theano 有些相似,是比较灵活的框架,但是其性能表现,目前还比不上上面的几个框架

但是,毕竟这篇文章已经是过去时了,那时候TensorFlow 还只能用 cuDNN v.2 版本,而我现在已经装的是v5.1版本,而且TensorFlow 也已经发布了1.0版本。现在各工具性能如何,还需要新的评测才能说明问题。

变量:创建、初始化、保存和加载

当训练模型时,用变量来存储和更新参数。变量包含张量 (Tensor)存放于内存的缓存区。建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘。这些变量的值可在之后模型训练和分析是被加载。

本文档描述以下两个TensorFlow类。点击以下链接可查看完整的API文档:
tf.Variable 类
tf.train.Saver 类
参考TensorFlow中文社区

- 添加神经层

输入参数有 inputs, in_size, out_size, 和 activation_function

# 添加层
def add_layer(inputs, in_size, out_size, activation_function=None):
            weights = tf.Variable(tf.random_normal([in_size, out_size]), name='weights')
            biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, name='biases')
            y = tf.matmul(inputs, weights) + biases
        if activation_function is None:
            outputs = y
        else:
            outputs = activation_function(y)
        return outputs

- loss

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices=[1]))

分类问题的loss 函数 cross_entropy 交叉熵
loss = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction), reduction_indices=[1]))

- 创建

当创建一个变量时,你将一个张量作为初始值传入构造函数Variable()。TensorFlow提供了一系列操作符来初始化张量,初始值是常量或是随机值。
注意,所有这些操作符都需要你指定张量的shape。那个形状自动成为变量的shape。变量的shape通常是固定的,但TensorFlow提供了高级的机制来重新调整其行列数。

# Create two variables.
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35), name="weights")
biases = tf.Variable(tf.zeros([200]), name="biases")

- 初始化

变量的初始化必须在模型的其它操作运行之前先明确地完成。最简单的方法就是添加一个给所有变量初始化的操作,并在使用模型之前首先运行那个操作。
使用tf.global_variables_initializer()添加一个操作对变量做初始化。记得在完全构建好模型并加载之后再运行那个操作。

# 7.初始化变量
init = tf.global_variables_initializer()
# tf.global_variables_initializer()是并行地初始化所有变量
# 有时候会需要用另一个变量的初始化值给当前变量初始化,这就需要注意了
# 用其它变量的值初始化一个新的变量时,使用其它变量的initialized_value()属性。
# 你可以直接把已初始化的值作为新变量的初始值,或者把它当做tensor计算得到一个值赋予新变量。
# w1 = tf.Variable(tf.random_normal([784, 200], stddev=0.35), name="w1")
# w2 = tf.Variable(w1.initialized_value(), name="w2")

# 8.启动图 (graph)
sess = tf.Session()
sess.run(init)

- 由另一个变量初始化

你有时候会需要用另一个变量的初始化值给当前变量初始化。由于tf.global_variables_initializer()是并行地初始化所有变量,所以在有这种需求的情况下需要小心。用其它变量的值初始化一个新的变量时,使用其它变量的initialized_value()属性。你可以直接把已初始化的值作为新变量的初始值,或者把它当做tensor计算得到一个值赋予新变量。

w1 = tf.Variable(tf.random_normal([784, 200], stddev=0.35), name="w1")
w2 = tf.Variable(w1.initialized_value(), name="w2")

以上就是python神经网络TensorFlow简介常用基本操作教程的详细内容,更多关于TensorFlow基本操作简介的资料请关注我们其它相关文章!

(0)

相关推荐

  • Tensorflow 自带可视化Tensorboard使用方法(附项目代码)

    Tensorboard: 如何更直观的观察数据在神经网络中的变化,或是已经构建的神经网络的结构.上一篇文章说到,可以使用matplotlib第三方可视化,来进行一定程度上的可视化.然而Tensorflow也自带了可视化模块Tensorboard,并且能更直观的看见整个神经网络的结构. 上面的结构图甚至可以展开,变成: 使用: 结构图: with tensorflow .name_scope(layer_name): 直接使用以上代码生成一个带可展开符号的一个域,并且支持嵌套操作: with tf

  • TensorFlow基本的常量、变量和运算操作详解

    简介 深度学习需要熟悉使用一个框架,本人选择了TensorFlow,一边学习一边做项目,下面简要介绍TensorFlow中的基本常量.变量和运算操作,参考斯坦福大学的cs20si和TensorFlow官网API. 常量 tf.constant() tf.constant(value, dtype=None, shape=None, name='Const', verify_shape=False),value为值,dtype类型,shape为张量形状,name名称.verify_shape默认F

  • tensorflow基本操作小白快速构建线性回归和分类模型

    目录 tensorflow是非常强的工具,生态庞大 tensorflow提供了Keras的分支 Define tensor constants. Linear Regression 分类模型 本例使用MNIST手写数字 Model prediction: 7 Model prediction: 2 Model prediction: 1 Model prediction: 0 Model prediction: 4 TF 目前发布2.5 版本,之前阅读1.X官方文档,最近查看2.X的文档. te

  • TensorFlow使用Graph的基本操作的实现

    1.创建图 在tensorflow中,一个程序默认是建立一个图的,除了系统自动建立图以外,我们还可以手动建立图,并做一些其他的操作. 下面我们使用tf.Graph函数建立图,使用tf.get_default_graph函数来获取图,使用reset_default_graph对图进行重置. import tensorflow as tf import numpy as np c = tf.constant(1.5) g = tf.Graph() with g.as_default(): c1 =

  • TensorFlow2基本操作之合并分割与统计

    目录 合并与分割 tf.concat tf.stack tf.unstack tf.split 数据统计 tf.norm reduce_min/max/mean argmax / argmin tf.equal tf.unique 合并与分割 tf.concat tf.concat可以帮助我们实现拼接操作. 格式: tf.concat( values, axis, name='concat' ) 参数: values: 一个 tensor 或 tensor list axis: 操作的维度 na

  • python神经网络TensorFlow简介常用基本操作教程

    目录 要将深度学习更快且更便捷地应用于新的问题中,选择一款深度学习工具是必不可少的步骤. TensorFlow是谷歌于2015年11月9日正式开源的计算框架.TensorFlow计算框架可以很好地支持深度学习的各种算法. TensorFlow很好地兼容了学术研究和工业生产的不同需求. 一方面,TensorFlow的灵活性使得研究人员能够利用它快速实现新的模型设计: 另一方面,TensorFlow强大的分布式支持,对工业界在海量数据集上进行的模型训练也至关重要.作为谷歌开源的深度学习框架,Tens

  • python神经网络tensorflow利用训练好的模型进行预测

    目录 学习前言 载入模型思路 实现代码 学习前言 在神经网络学习中slim常用函数与如何训练.保存模型文章里已经讲述了如何使用slim训练出来一个模型,这篇文章将会讲述如何预测. 载入模型思路 载入模型的过程主要分为以下四步: 1.建立会话Session: 2.将img_input的placeholder传入网络,建立网络结构: 3.初始化所有变量: 4.利用saver对象restore载入所有参数. 这里要注意的重点是,在利用saver对象restore载入所有参数之前,必须要建立网络结构,因

  • Python神经网络TensorFlow基于CNN卷积识别手写数字

    目录 基础理论 一.训练CNN卷积神经网络 1.载入数据 2.改变数据维度 3.归一化 4.独热编码 5.搭建CNN卷积神经网络 5-1.第一层:第一个卷积层 5-2.第二层:第二个卷积层 5-3.扁平化 5-4.第三层:第一个全连接层 5-5.第四层:第二个全连接层(输出层) 6.编译 7.训练 8.保存模型 代码 二.识别自己的手写数字(图像) 1.载入数据 2.载入训练好的模型 3.载入自己写的数字图片并设置大小 4.转灰度图 5.转黑底白字.数据归一化 6.转四维数据 7.预测 8.显示

  • MySQL视图简介及基本操作教程

    前言 视图是数据库系统中一种非常有用的数据库对象.MySQL 5.0 之后的版本添加了对视图的支持. 认识视图 视图是一个虚拟表,其内容由查询定义.同真实表一样,视图包含一系列带有名称的列和行数据,但视图并不是数据库真实存储的数据表. 视图是从一个.多个表或者视图中导出的表,包含一系列带有名称的数据列和若干条数据行. 视图并不同于数据表,它们的区别在于以下几点: 视图不是数据库中真实的表,而是一张虚拟表,其结构和数据是建立在对数据中真实表的查询基础上的. 存储在数据库中的查询操作 SQL 语句定

  • python人工智能tensorflow构建循环神经网络RNN

    目录 学习前言 RNN简介 tensorflow中RNN的相关函数 tf.nn.rnn_cell.BasicLSTMCell tf.nn.dynamic_rnn 全部代码 学习前言 在前一段时间已经完成了卷积神经网络的复习,现在要对循环神经网络的结构进行更深层次的明确. RNN简介 RNN 是当前发展非常火热的神经网络中的一种,它擅长对序列数据进行处理. 什么是序列数据呢?举个例子. 现在假设有四个字,“我” “去” “吃” “饭”.我们可以对它们进行任意的排列组合. “我去吃饭”,表示的就是我

  • python神经网络使用tensorflow构建长短时记忆LSTM

    目录 LSTM简介 1.RNN的梯度消失问题 2.LSTM的结构 tensorflow中LSTM的相关函数 tf.contrib.rnn.BasicLSTMCell tf.nn.dynamic_rnn 全部代码 LSTM简介 1.RNN的梯度消失问题 在过去的时间里我们学习了RNN循环神经网络,其结构示意图是这样的: 其存在的最大问题是,当w1.w2.w3这些值小于0时,如果一句话够长,那么其在神经网络进行反向传播与前向传播时,存在梯度消失的问题. 0.925=0.07,如果一句话有20到30个

  • python神经网络使用tensorflow实现自编码Autoencoder

    目录 学习前言 antoencoder简介 1.为什么要降维 2.antoencoder的原理 3.python中encode的实现 全部代码 学习前言 当你发现数据的维度太多怎么办!没关系,我们给它降维!当你发现不会降维怎么办!没关系,来这里看看怎么autoencode antoencoder简介 1.为什么要降维 随着社会的发展,可以利用人工智能解决的越来越多,人工智能所需要处理的问题也越来越复杂,作为神经网络的输入量,维度也越来越大,也就出现了当前所面临的“维度灾难”与“信息丰富.知识贫乏

  • python人工智能tensorflow常用激活函数Activation Functions

    目录 常见的激活函数种类及其图像 1 sigmoid(logsig)函数 2 tanh函数 3 relu函数 4 softplus函数 tensorflow中损失函数的表达 1 sigmoid(logsig)函数 2 tanh函数 3 relu函数 4 softplus函数 激活函数在机器学习中常常用在神经网络隐含层节点与神经网络的输出层节点上,激活函数的作用是赋予神经网络更多的非线性因素,如果不用激励函数,输出都是输入的线性组合,这种情况与最原始的感知机相当,网络的逼近能力相当有限.如果能够引

  • python人工智能tensorflow构建卷积神经网络CNN

    目录 简介 隐含层介绍 1.卷积层 2.池化层 3.全连接层 具体实现代码 卷积层.池化层与全连接层实现代码 全部代码 学习神经网络已经有一段时间,从普通的BP神经网络到LSTM长短期记忆网络都有一定的了解,但是从未系统的把整个神经网络的结构记录下来,我相信这些小记录可以帮助我更加深刻的理解神经网络. 简介 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),

  • python神经网络slim常用函数训练保存模型

    目录 学习前言 slim是什么 slim常用函数 1.slim = tf.contrib.slim 2.slim.create_global_step 3.slim.dataset.Dataset 4.slim.dataset_data_provider.DatasetDataProvider 5.slim.conv2d 6.slim.max_pool2d 7.slim.fully_connected 8.slim.learning.train 本次博文实现的目标 整体框架构建思路 1.整体框架

随机推荐