TensorFlow原理:
TensorFlow使用Graph来描述计算任务,图中的节点被称之为op.一个op可以接受0或多个tensor作为输入,也可产生0或多个tensor作为输出.任何一个Graph要想运行,都必须借助上下文Session.通过Session启动Graph,并将Graph中的op分发到CPU或GPU上,借助Session提供执行这些op.op被执行后,将产生的tensor返回.借助Session提供的feed和fetch操作,我们可以为op赋值或者获取数据.计算过程中,通过变量(Variable)来维护计算状态.
1、TensorFlow基本概念
基本概念 
类型
描述
用途
Session
会话
图必须在称之为“会话”的上下文中执行。会话将图的op分发到诸如CPU或者GPU上计算
Graph
描述计算过程
必须在Session中启动
tensor
数据(张量)
数据类型之一,代表多维数组
op
操作
图中的节点被称之为op,一个op获得0或者多个Tensor,执行计算,产生0或者多个Tensor
Variable
变量
数据类型之一,运行过程中可以被改变,用于维护状态
feed
赋值
为op的tensor赋值
fetch
取值
从op的tensor中取值
Constant
常量
数据类型之一,不可变
2、计算图(Graph)
(1)在TensorFlow中,系统会自动维护一个默认的计算图,通过tf.get_default_graph函数可以获取当前默认的计算图
#通过a.graph可以查看张量所属的计算图。因为没有特意指定,所以这个计算图
#应该等于当前默认的计算图。所以下面这个操作输出值为True
print(a.graph is tf.get_default_graph())
(2)TensorFlow支持通过tf.Graph函数来生成新的计算图
g1=tf.Graph()
with g1.as_default(): #在计算图g1中定义变量’v',并设置初始值为0
v=tf.get_variable('v',initializer=tf.zeros_initializer([1]))
3、创建图和启动图
创建一个图并在Session中执行(TensorFlow实现一个简单的矩阵乘法)
import tensorflow as tf #引入TensorFlow
v1=tf.constant([[2,3]]) #创建一个常量v1,它是一个12列的矩阵
v2=tf.constant([[2],[3]]) #创建一个常量v2,它是一个21列的矩阵
#创建一个矩阵乘法,创建乘法后,是不会立即执行的,要在会话中执行
product=tf.matmul(v1,v2)
sess=tf.Session() #定义一个会话
result=sess.run(product) #运算乘法,得到结果
print(result) #打印结果 #结果为 [[13]]
sess.close() #关闭会话

4、 创建一个变量,并用for循环对变量进行赋值操作
TensorFlow使用Variables来维护图执行过程中的状态信息
import tensorflow as tf #引入TensorFlow
num=tf.Variable(0,name='count') #创建一个变量num,初始化为0
new_value=tf.add(num,10) #创建一个加法操作,把当前数字加10
op=tf.assign(num,new_value) #创建一个赋值操作,把new_value赋值给num
#使用Python的上下文管理器机制,在运行完毕后,会话会自动关闭
with tf.Session() as sess:
sess.run(tf.global_variables_initializer()) #初始化变量
print(sess.run(num)) #打印最初的num
for i in range(5): #创建一个for循环,每次给num+10,并打印出来
sess.run(op)
print(sess.run(num))
#输出结果如下
'''
0
10
20
30
40
50
'''
5、通过feed设置placeholder的值
import tensorflow as tf
input1=tf.placeholder(tf.float32) #创建一个变量占位符input1
input2=tf.placeholder(tf.float32) #创建一个变量占位符input2
#创建一个乘法操作,把input1input2相乘
new_value=tf.multiply(input1,input2)
#创建会话,使用此方法,在运行完毕后,会话自动关闭
with tf.Session() as sess:
#打印new_value的值,在运算时,用feed设置两个输入的值
print(sess.run(new_value,feed_dict={input1:[23.0],input2:[11.0]}))
#结果为253.0
6、通过Fetch在会话中同时设置多个op
import tensorflow as tf
input1=tf.constant(3.0) #设置三个常量
input2=tf.constant(2.0)
input3=tf.constant(5.0)
add=tf.add(input2,input3) #加法操作
mul=tf.multiply(input1,add) #乘法操作
with tf.Session() as sess:
result=sess.run([mul,add]) #在sess的运算中可以取回多个tensor
print(result)
#结果为[21.0, 7.0]
7、TensorFlow简单示例(实现单变量线性回归)
import tensorflow as tf
import numpy as np
#随机生成训练集
x_data=np.random.rand(100) #使用numpy生成100随机点
y_data=x_data*0.1+0.2
#构造一个线性模型
b=tf.Variable(0.) #设置参数变量并初始化为0
k=tf.Variable(0.)
y=k*x_data+b
#二次代价函数(损失函数)
loss=tf.reduce_mean(tf.square(y_data-y))
#定义一个梯度下降法来进行训练的优化器
optimizer=tf.train.GradientDescentOptimizer(0.2) #0.2表示学习率
#最小化代价函数
train=optimizer.minimize(loss)
init=tf.global_variables_initializer() #初始化变量
with tf.Session() as sess:
sess.run(init) #在会话里运行初始化变量
for step in range(201): #迭代训练200
sess.run(train)
if step%20==0: #每迭代20次输出kb的值
print(step,sess.run([k,b]))
结果:

8、TensorFlow实现神经网络向前传播算法
import tensorflow as tf
#声明w1w2两个变量
#通过seed参数设定了随机种子,可以保证每次运行得到的结果一样
#生成一个2*3的矩阵,矩阵中的元素是均值为0,标准差为1的随机数
w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))
'''
#将输入的特征向量定义为一个常量
x=tf.constant([[0.7,0.9]]) #x是一个1*2的矩阵
'''
#定义placeholder存放输入数据
x=tf.placeholder(tf.float32,shape=(3,2),name='x_input') #32列的样例数据
#通过前向传播算法获得神经网络的输出
a=tf.matmul(x,w1)
y=tf.matmul(a,w2)
with tf.Session() as sess:
init_op=tf.global_variables_initializer() #初始化所有的变量
sess.run(init_op)
print(sess.run(y,feed_dict={x:[[0.7,0.9],[0.1,0.4],[0.5,0.8]]}))
#结果为
'''
[[3.957578 ]
[1.1537654]
[3.1674924]]
'''
注:
(1)TensorFlow目前支持的所有随机数生成器

(2)



TensorFlow游乐场https://playground.tensorflow.org
参考资料:《TensorFlow实战Google深度学习框架》
参考博客:https://blog.csdn.net/dd864140130/article/details/71774229



TensorFlow——入门基础相关推荐

  1. tensorflow入门基础

    tensorflow程序一般分为两个阶段,在第一个阶段需要定义图中所有的计算.在第二个阶段就是执行计算. 1. 计算图的使用 首先在tensorflow的程序中系统会维护一个默认的计算图,通过tf.g ...

  2. TensorFlow入门教程(1)安装、基础、Tensorboard

    TensorFlow入门教程 本教程适合人群: - 会些python但不是特别精通 - 机器学习的初学者 本教程预计耗时: - 2-3小时 本教程预计效果: - 掌握TensorFlow的基础操作 - ...

  3. LSTM入门必读:从入门基础到工作方式详解 By 机器之心2017年7月24日 12:57 长短期记忆(LSTM)是一种非常重要的神经网络技术,其在语音识别和自然语言处理等许多领域都得到了广泛的应用

    LSTM入门必读:从入门基础到工作方式详解 By 机器之心2017年7月24日 12:57 长短期记忆(LSTM)是一种非常重要的神经网络技术,其在语音识别和自然语言处理等许多领域都得到了广泛的应用. ...

  4. TensorFlow入门:第一个机器学习Demo

    TensorFlow入门:第一个机器学习Demo 2017年12月13日 20:10:23 阅读数:8604 本文主要通过一个简单的 Demo 介绍 TensorFlow 初级 API 的使用方法,因 ...

  5. 从 TensorFlow 入门机器学习

    写在前面:紧跟时代步伐,开始学习机器学习,抱着争取在毕业之前多看看各个方向是什么样子的心态,发现这是一个很有潜力也很有趣的领域(keng).// 然后就开始补数学了-- 0 TensorFlow 介绍 ...

  6. Tensorflow 入门教程

    Tensorflow 入门教程  http://tensornews.cn/ 深度学习发展史 特征工程 深度学习之激活函数 损失函数 反向传播算法 [上] 反向传播算法 [下] Tensorflow ...

  7. 比官方更简洁的Tensorflow入门教程

    声明: 参考自Python TensorFlow Tutorial – Build a Neural Network,本文简化了文字部分 文中有很多到官方文档的链接,毕竟有些官方文档是中文的,而且写的 ...

  8. (转)tensorflow入门教程(二十六)人脸识别(上)

    https://blog.csdn.net/rookie_wei/article/details/81676177 1.概述 查看全文 http://www.taodudu.cc/news/show- ...

  9. 吴恩达深度学习课程-Course 2 改善深层神经网络 第三周 TensorFlow入门编程作业

    虽然申请书的ddl临近,但还是先写写编程作业- 编程作业的代码用的是tf1,而我的环境为tf2,所以 TensorFlow入门 TensorFlow教程 1 - 探索Tensorflow库 1.1 - ...

最新文章

  1. 10万人的1000万张图像,微软悄然删除最大公开人脸数据集
  2. matlab基本操作--基本数学定义
  3. 深度学习核心技术精讲100篇(五十五)-深度解读分布式定时任务框架
  4. linux搜索含多个字符串,使用grep搜索多个字符串
  5. 大型网站技术架构(三)架构核心要素
  6. exe电子书转换txt 下载_如何把电子书转换成适合Kindle 的格式?这是最全的攻略...
  7. [Python] 矩阵拼接 np.c_[a,b]和np.r_[a,b]
  8. 多线程例题练手(c入门)
  9. VS报错——无法打开文件XXX.lib
  10. react-redux-express异步前后端数据交互(面向初学者,高手勿进)
  11. SSM框架下的注册验证
  12. 打造自己的win10精简系统
  13. 分销系统开发 三级分销技术开发
  14. 实现电脑同时上内网和外网(或通过外网访问到该电脑通过该电脑访问内网)
  15. java 物体移动不了总结_java9迁移注意问题总结
  16. 加快打造“云上贵州”,靠大数据实现“后发赶超”
  17. Angular2组件开发—模板的逻辑控制(一)
  18. 微信多开防撤回工具再也不用担心好友撤回消息和登录多个账号了
  19. 一文弄懂数据结构中的红黑树、二叉树
  20. 高炉煤气净化提质技术及发展趋势浅谈

热门文章

  1. centos6.5 rsync+inotify同步配置笔记
  2. 给IIS添加CA证书以支持https
  3. Android 设计模式:(三)装饰者模式 —— 装饰对象
  4. Mac OS X 下Node.js开发环境的搭建
  5. HTTPS网络加密双向验证-使用AFNetworking封装
  6. java8中的时间处理6 - 格式化
  7. golang实现给图片加水印
  8. 第106天:Ajax中同步请求和异步请求
  9. 懒汉式单例和饿汉式单例优缺点
  10. 全国首个窄带物联网实验局落户福州 助力智慧城市建设