TensorFlow——入门基础

简介: TensorFlow原理: TensorFlow使用Graph来描述计算任务,图中的节点被称之为op.一个op可以接受0或多个tensor作为输入,也可产生0或多个tensor作为输出.
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 ,它是一个 1 2 列的矩阵
v2=tf. constant ([[ 2 ],[ 3 ]]) # 创建一个常量 v2 ,它是一个 2 1 列的矩阵
# 创建一个矩阵乘法,创建乘法后,是不会立即执行的,要在会话中执行
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
# 创建一个乘法操作,把 input1 input2 相乘
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 次输出 k b 的值
print (step,sess. run ([k,b]))

结果:

8、TensorFlow实现神经网络向前传播算法
import tensorflow as tf
# 声明 w1 w2 两个变量
# 通过 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' ) #3 2 列的样例数据

# 通过前向传播算法获得神经网络的输出
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深度学习框架》



相关文章
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow入门指南:基础概念与安装
【4月更文挑战第17天】TensorFlow入门指南介绍了该流行深度学习框架的基础概念和安装步骤。核心概念包括张量(多维数组)、计算图(表示计算任务的图结构)、会话(执行环境)以及变量(存储模型参数)。安装TensorFlow可通过pip或conda,GPU支持需额外条件。安装成功后,通过Python验证版本即可开始使用。
|
11月前
|
TensorFlow 算法框架/工具
tensorflow 入门学习
tensorflow 入门学习
32 0
|
3月前
|
机器学习/深度学习 数据可视化 TensorFlow
使用TensorFlow进行深度学习入门
【5月更文挑战第18天】本文介绍了TensorFlow深度学习入门,包括TensorFlow的概述和一个简单的CNN手写数字识别例子。TensorFlow是由谷歌开发的开源机器学习框架,以其灵活性、可扩展性和高效性著称。文中展示了如何安装TensorFlow,加载MNIST数据集,构建并编译CNN模型,以及训练和评估模型。此外,还提供了预测及可视化结果的代码示例。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
使用TensorFlow进行深度学习入门
【5月更文挑战第11天】本文引导读者入门TensorFlow深度学习,介绍TensorFlow——Google的开源机器学习框架,用于处理各种机器学习问题。内容包括TensorFlow安装(使用pip)、核心概念(张量、计算图和会话)以及构建和训练简单线性回归模型的示例。通过这个例子,读者可掌握TensorFlow的基本操作,包括定义模型、损失函数、优化器以及运行会话。
|
3月前
|
机器学习/深度学习 TensorFlow 区块链
TensorFlow 和 Keras 应用开发入门:1~4 全
TensorFlow 和 Keras 应用开发入门:1~4 全
191 0
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow 初步:深度学习模型构建入门
TensorFlow 是由 Google Brain 团队开发的深度学习框架,它提供了一种高效且灵活的方式来实现和训练各种深度学习模型。本文将引导你通过 TensorFlow 的基础功能,帮助你构建你的第一个深度学习模型。
|
机器学习/深度学习 存储 人工智能
深度学习入门笔记6 tensorflow学习
深度学习入门笔记6 tensorflow学习
|
TensorFlow 算法框架/工具 iOS开发
《从零到一:IOS平台TensorFlow入门及应用详解(附源》电子版地址
从零到一:IOS平台TensorFlow入门及应用详解(附源
72 0
《从零到一:IOS平台TensorFlow入门及应用详解(附源》电子版地址
|
TensorFlow 算法框架/工具 iOS开发
《从零到一:IOS平台TensorFlow入门及应用详解(附源码)》电子版地址
从零到一:IOS平台TensorFlow入门及应用详解(附源码)
106 0
《从零到一:IOS平台TensorFlow入门及应用详解(附源码)》电子版地址
|
TensorFlow 算法框架/工具 索引

热门文章

最新文章

相关实验场景

更多