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

 更新时间:2021年11月3日 20:01  点击:1759 作者:零尾

要将深度学习更快且更便捷地应用于新的问题中,选择一款深度学习工具是必不可少的步骤。

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文档:
参考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基本操作简介的资料请关注猪先飞其它相关文章!

原文出处:https://blog.csdn.net/lwplwf/article/details/54929290

[!--infotagslink--]

相关文章

  • python opencv 画外接矩形框的完整代码

    这篇文章主要介绍了python-opencv-画外接矩形框的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-04
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • 最炫Python烟花代码全解析

    2022虎年新年即将来临,小编为大家带来了一个利用Python编写的虎年烟花特效,堪称全网最绚烂,文中的示例代码简洁易懂,感兴趣的同学可以动手试一试...2022-02-14
  • python中numpy.empty()函数实例讲解

    在本篇文章里小编给大家分享的是一篇关于python中numpy.empty()函数实例讲解内容,对此有兴趣的朋友们可以学习下。...2021-02-06
  • python-for x in range的用法(注意要点、细节)

    这篇文章主要介绍了python-for x in range的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-10
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • python实现b站直播自动发送弹幕功能

    这篇文章主要介绍了python如何实现b站直播自动发送弹幕,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-02-20
  • python Matplotlib基础--如何添加文本和标注

    这篇文章主要介绍了python Matplotlib基础--如何添加文本和标注,帮助大家更好的利用Matplotlib绘制图表,感兴趣的朋友可以了解下...2021-01-26
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • python 计算方位角实例(根据两点的坐标计算)

    今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
  • python实现双色球随机选号

    这篇文章主要为大家详细介绍了python实现双色球随机选号,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-05-02
  • python中使用np.delete()的实例方法

    在本篇文章里小编给大家整理的是一篇关于python中使用np.delete()的实例方法,对此有兴趣的朋友们可以学习参考下。...2021-02-01
  • 使用Python的pencolor函数实现渐变色功能

    这篇文章主要介绍了使用Python的pencolor函数实现渐变色功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-09
  • python自动化办公操作PPT的实现

    这篇文章主要介绍了python自动化办公操作PPT的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-05
  • Python getsizeof()和getsize()区分详解

    这篇文章主要介绍了Python getsizeof()和getsize()区分详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-20
  • 解决python 两个时间戳相减出现结果错误的问题

    这篇文章主要介绍了解决python 两个时间戳相减出现结果错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-12
  • python实现学生通讯录管理系统

    这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
  • PyTorch一小时掌握之迁移学习篇

    这篇文章主要介绍了PyTorch一小时掌握之迁移学习篇,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-08
  • Python绘制的爱心树与表白代码(完整代码)

    这篇文章主要介绍了Python绘制的爱心树与表白代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-06