Tensorflow实践 基本原理学习和框架使用
Tensorflow 是google大脑小组的工程师们开发的用于机器学习和深度神经网络方面的研究,它通过一个数据流图来进行计算。[本文是对Tensorflow社区资料进行学习和实践,其中文社区还是很好的学习资源]
一、基本概念:
1、 数据流程图 data flow graphs
它的数据流图如下图所示(来源于网络):
2、 节点【nodes】: 图中的各种形状的方块,表示的是某种数学操作【op】
3、 线【edges】: 表示节点间相互联系的多维数据数组,在tensorflow中,称为 张量【tensor】。个人理解为数学中的向量矩阵如:
三个元素的一维向量 [ 1, 2, 3 ], 2x2 的二维向量 [ [ 1, 1],[1, 1 ] ]
4、 重塑节点【Reshape】:前面说了 节点表示计算, 所以reshape是一个计算节点,用于进行矩阵的行数、列数、维度的调整。经常用这个节点进行降低维度计算
5、 激活函数层【ReLULayer】:实现了对输入数据的非负处理,将小于零的数据进行了截断。
6、 逻辑层【Logit layer】: 实现逻辑回归,实现分类器计算
7、 计算梯度【Gradients】:计算梯度
8、 梯度下降训练【SGD Trains】:进行梯度下降训练优化
二、tensorflow的基本使用
一般来说,tensorflow使用图(graph)来表示计算任务,在会话 (Session) 的上下文 (context) 中执行图 ;使用tensor 表示数据,变量 (Variable)记录计算状态;使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据;
import tensorflow as tf
# 创建一个常量 op, 产生一个 1x2 矩阵. 这个 op 被作为一个节点
# 加到默认图中.
#
# 构造器的返回值代表该常量 op 的返回值.
matrix1 = tf.constant([[3., 3.]])
# 创建另外一个常量 op, 产生一个 2x1 矩阵.
matrix2 = tf.constant([[2.],[2.]])
# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
# 返回值 'product' 代表矩阵乘法的结果.
product = tf.matmul(matrix1, matrix2)
#Session 对象在使用完后需要关闭以释放资源. 除了显式调用 close 外, 也可以使用 "with" 代码块 来自动完成关闭动作.
#注意下面第二句和第三局的缩进
with tf.Session() as sess:
result = sess.run([product])
print result
下面看看执行结果
1、变量
变量的使用,需要通过初始化加入到图中
import tensorflow as tf
# 创建一个变量, 初始化为标量 0.
count = tf.Variable(0, name="counter")
# 创建一个 op, 其作用是使 count 增加 1
one = tf.constant(1)
new_value = tf.add(count, one)
update = tf.assign(count, new_value)
# 启动图后, 变量必须先经过初始化,
# 首先必须增加一个`初始化` op 到图中.
init_op = tf.initialize_all_variables()
# 启动图, 运行 op
with tf.Session() as sess:
# 运行 'init' op
result = sess.run(init_op)
print sess.run(count)
# 运行 op, 更新count值
sess.run(update)
print sess.run(count)
执行结果如下
之所以会多打印一个1,是因为 tf.assign( oldValue, newValue) 函数会打印
2) Fetch 拿取、获取
可以一次传入多个tensor 获取结果
import tensorflow as tf
#定义两个常量
x = tf.constant(3)
y = tf.constant(4)
# 创建3个 op,计算x平方和y平方和
xx = tf.mul(x, x)
yy = tf.mul(y, y)
zz = tf.add(xx, yy)
# 启动图, 运行 op
with tf.Session() as sess:
result = sess.run([xx, yy, zz])
print result
执行结果 不因为 sess.run([xx,yy,zz]) 中间的tensor 顺序而改变结果
3) feed
tensorflow提供了占位符和feed填入的机制,对于计算中的参数(预先用占位符定义),通过feed_dict的方式进行代入实际计算值的方法
import tensorflow as tf
#定义两个常量
x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)
# 创建3个 op,计算x平方和y平方和
xx = tf.mul(x, x)
yy = tf.mul(y, y)
zz = tf.add(xx, yy)
# 启动图, 运行 op
with tf.Session() as sess:
result = sess.run([xx, yy, zz], feed_dict={x:[3.], y:[4.]} )
print result
计算结果如下:
---------------------
原文:https://blog.csdn.net/csolo/article/details/78788631
Tensorflow实践 基本原理学习和框架使用相关推荐
- 令人激动!谷歌推强化学习新框架「多巴胺」,基于TensorFlow,已开源丨附github...
郭一璞 发自 凹非寺 量子位 报道 | 公众号 QbitAI 上周那个在DOTA2 TI8赛场上"装逼失败"的OpenAI Five,背后是强化学习的助推. 其实不仅仅是Open ...
- python神经网络原理pdf_《深度学习原理与 TensorFlow实践》高清完整PDF版 下载
1.封面介绍 2.出版时间 2019年7月 3.推荐理由 本书介绍了深度学习原理与TensorFlow实践.着重讲述了当前学术界和工业界的深度学习核心知识:机器学习概论.神经网络.深度学习.着重讲述了 ...
- 热度直逼TensorFlow的深度学习框架,我用它画下女朋友最美的脸
这不,又一个程序员为爱变身灵魂画手,看得我都想学画画了. 阿华是幸运的,因为他找到了对的方法,事半功倍,最终有情人终成眷属.这也得益于 PyTorch 的易学易用,大多数人第一次使用 PyTorch ...
- 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(八)(TensorFlow基础))
[神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(八)(TensorFlow基础)) 8 TensorFlow基础 8.1 TensorFlow2.0特性 8.1.1 Tenso ...
- Keras还是TensorFlow?深度学习框架选型实操分享
译者| 王天宇.林椿眄 责编| Jane.琥珀 出品| AI科技大本营 深度学习发展势头迅猛,但近两年涌现的诸多深度学习框架让初学者无所适从.如 Google 的 TensorFlow.亚马逊的 MX ...
- 深度学习原理与TensorFlow实践
深度学习原理与TensorFlow实践 王琛,胡振邦,高杰 著 ISBN:9787121312984 包装:平装 开本:16开 用纸:胶版纸 正文语种:中文 出版社:电子工业出版社 出版时间:2017 ...
- Karpathy更新深度学习开源框架排名:TensorFlow第一,PyTorch第二
上周,Keras作者.谷歌研究科学家François Chollet晒出一张图,他使用Google Search Index,展示了过去三个月,ArXiv上提到的深度学习框架排行,新智元也做了报道: ...
- 【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练
背景 我们在之前的文章中介绍过如何通过PAI内置的TensorFlow框架实验基于Cifar10的图像分类,文章链接:https://yq.aliyun.com/articles/72841.使用Te ...
- DL框架之TensorFlow:深度学习框架TensorFlow Core(低级别TensorFlow API)的简介、安装、使用方法之详细攻略
DL框架之TensorFlow:TensorFlow Core(低级别TensorFlow API)的简介.安装.使用方法之详细DL框架之TensorFlow:深度学习框架TensorFlow Cor ...
最新文章
- GitHub开源的10个超棒后台管理面板
- java validation_java bean validation 参数验证
- hdu 1520 树形dp
- java三层架构是不是策略模式,把「策略模式」应用到实际项目中
- python视窗编程_[PYTHON] 核心编程笔记(19.图形用户界面编程)
- adurnio 单片机_单片机20~200A大电流检测电路设计 用AD实现 带原理图,源代码,proteus仿真文件...
- php怎么去除内容,php怎么把html标签去除?
- caffe 中solver.prototxt
- RocketMQ系列实战
- 微信小程序--音乐播放器
- jdbc odbc连接mysql_具体说明JDBC连接数据库与ODBC连接数据的区别
- 分享一个不错的个人简历模板下载网站(word文件可编辑的)
- 为什么低通滤波器的作用相当于积分器
- 现代密码学常用符号总结
- 计算机游戏优化,Win10电脑玩游戏优化方法!必须关闭这几个设置,效果提升巨大...
- 浪涌测试仪的工作原理
- 日本财险容灾案例揭示小公司的容灾之道
- 筛选后系列填充_几个“特殊”的Excel筛选技巧
- css安卓手机位置偏差,完美解决移动端使用rem单位时CSSSprites错位问题_html/css_WEB-ITnose...
- int转long Long型