TensorFlow 入门:Session、Variable、placeholder

简介: TensorFlow 入门:Session、Variable、placeholder

Tensorflow 是谷歌2015年11月正式开源的计算框架。主要依赖Protocol Buffer和Bzael两个工具包:


Protocl Buffer是谷歌开发的结构化数据处理工具

Bzael 是谷歌的自动化构建工具,谷歌内部大部分应用均通过它来编译

Tensorflow 是谷歌2015年11月正式开源的计算框架。主要依赖Protocol Buffer和Bzael两个工具包:


Protocl Buffer是谷歌开发的结构化数据处理工具

Bzael 是谷歌的自动化构建工具,谷歌内部大部分应用均通过它来编译

Tensorflow的名字已经说明其最重要的两个概念:


Tensor就是张量,即多维数组,所有数据都通过张量的形式表示。一个张量主要保存三个属性:名字(name),维度(shape)和类型。

Flow就是流,体现了计算模型,Tensorflow中每个计算都是计算图上的一个节点,节点之间的边描述了计算间的依赖关系

Tensorflow支持14种不同类型,主要包括:


实数(tf.float32, tf.float64)

整数(tf.int8, tf.int16, tf.int32, tf.int64, tf.unit8)

布尔型(tf.bool)

复数(tf.complex64, tf.complex128)


1. 会话


Tensorflow使用会话(Session)执行定义好的运算,会话拥有并管理Tensorflow程序运行时的所有资源,计算完成后需要关闭会话回收资源。

为解决异常退出时的资源释放问题,Tensorflow通过Python上下文管理器来使用会话(将所有计算放在with内部),当上下文管理器退出时自动释放所有资源。

x = tf.constant([[1.0,2.0]])   #x(1,2)
w = tf.constant([[3.0],[4.0]]) #w(2,1)
y = tf.matmul(x,w)             #y(1,1)
with tf.Session() as sess:
    print(sess.run(y))


2. 变量


Tensorflow支持14种不同类型,主要包括:

  • 实数(tf.float32, tf.float64)
  • 整数(tf.int8, tf.int16, tf.int32, tf.int64, tf.unit8)
  • 布尔型(tf.bool)
  • 复数(tf.complex64, tf.complex128)


tf.Variable(<initial-value>, name=<optional-name>) 用于生成一个初始值为initial-value(必须指定)的变量

tf.get_variable(name, shape=None, dtype=tf.float32, initializer=None) 获取已存在的变量(要求不仅名字,而且初始化方法等各个参数都一样),若不存在,就新建一个(可以用各种初始化方法,如xavier_initializer不用明确指定值)。


常用的生成随机数/数组的函数有:


tf.random_normal():生成正态分布随机数

tf.truncated_normal():生成去掉过大偏离点的正态分布随机数

tf.random_uniform():生成均匀分布随机数

tf.zeros:表示生成全0数组

tf.ones :表示生成全1数组

tf.fill :表示生成全定值数组

tf.constant:表示生成直接给定值的数组


例:


tf.Variable(tf.random_normal([2,3],stddev=2, mean=0, seed=1)),表示生成正态分布随机数,形状两行三列,标准差是2,均值是0,随机种子是1

tf.Variable(tf.Truncated_normal([2,3],stddev=2, mean=0, seed=1)),表示去掉偏离过大的正态分布, 也就是如果随机出来的数据偏离平均值超过两个标准差,这个数据将重新生成

random_uniform(shape=7,minval=0,maxval=1,dtype=tf.int32, seed=1),表示从一个均匀分布[minval maxval)中随机采样,注意定义域是左闭右开,即

包含minval,不包含 maxval

tf.zeros([3,2],int32)表示生成[[0,0],[0,0],[0,0]]

tf.ones([3,2],int32)表示生成[[1,1],[1,1],[1,1]

tf.fill([3,2],6)表示生成[[6,6],[6,6],[6,6]]

tf.constant([3,2,1])表示生成[3,2,1]。


3. placeholder


Tensorflow通过placeholder占位符机制用于提供输入数据,相当于定义一个位置,这个位置中的数据在程序运行时再指定。在定义时需要指定数据类型(不可改变)。这样在程序中就不需要生成大量常量来提供输入数据,而只需要将数据通过placeholder传入Tensorflow计算图。


#使用占位符 一次输入一组数据
x = tf.placeholder(tf.float32,shape=(1,2))
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init_op)
    print(sess.run(y,feed_dict={x:[[0.7,0.5]]}))
#使用占位符 一次输入多组数据
x = tf.placeholder(tf.float32,shape=(None,2))
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init_op)
    print(sess.run(y,feed_dict={x:[[0.7,0.5],[0.2,0.3],[0.3,0.4],[0.4,0.5]]}))
    print(sess.run(w1))
    print(sess.run(w2)) 


相关文章
|
10天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow入门指南:基础概念与安装
【4月更文挑战第17天】TensorFlow入门指南介绍了该流行深度学习框架的基础概念和安装步骤。核心概念包括张量(多维数组)、计算图(表示计算任务的图结构)、会话(执行环境)以及变量(存储模型参数)。安装TensorFlow可通过pip或conda,GPU支持需额外条件。安装成功后,通过Python验证版本即可开始使用。
|
7月前
|
TensorFlow 算法框架/工具
tensorflow 入门学习
tensorflow 入门学习
26 0
|
3月前
|
机器学习/深度学习 TensorFlow 区块链
TensorFlow 和 Keras 应用开发入门:1~4 全
TensorFlow 和 Keras 应用开发入门:1~4 全
172 0
|
9月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow 初步:深度学习模型构建入门
TensorFlow 是由 Google Brain 团队开发的深度学习框架,它提供了一种高效且灵活的方式来实现和训练各种深度学习模型。本文将引导你通过 TensorFlow 的基础功能,帮助你构建你的第一个深度学习模型。
|
10月前
|
机器学习/深度学习 存储 人工智能
深度学习入门笔记6 tensorflow学习
深度学习入门笔记6 tensorflow学习
|
TensorFlow 算法框架/工具 iOS开发
《从零到一:IOS平台TensorFlow入门及应用详解(附源》电子版地址
从零到一:IOS平台TensorFlow入门及应用详解(附源
60 0
《从零到一:IOS平台TensorFlow入门及应用详解(附源》电子版地址
|
TensorFlow 算法框架/工具 iOS开发
《从零到一:IOS平台TensorFlow入门及应用详解(附源码)》电子版地址
从零到一:IOS平台TensorFlow入门及应用详解(附源码)
96 0
《从零到一:IOS平台TensorFlow入门及应用详解(附源码)》电子版地址
|
机器学习/深度学习 算法 TensorFlow
深度学习入门笔记系列 ( 八 ) ——基于 tensorflow 的手写数字的识别(进阶)
基于 tensorflow 的手写数字的识别(进阶) 本系列将分为 8 篇 。本次为第 8 篇 ,基于 tensorflow ,利用卷积神经网络 CNN 进行手写数字识别 。
213 0
深度学习入门笔记系列 ( 八 ) ——基于 tensorflow 的手写数字的识别(进阶)
|
机器学习/深度学习 数据挖掘 TensorFlow
TensorFlow学习之旅(一)入门知识记录
TensorFlow学习之旅(一)入门知识记录
134 0
TensorFlow学习之旅(一)入门知识记录
|
机器学习/深度学习 传感器 监控
sklearn&Tensorflow机器学习02 ---用一个完整的项目来进行机器学习入门
学习一个东西首先要从大局在掌握,知道整体框架是什么,有哪些部分,然后再逐个击破,便事半功倍。
173 0
sklearn&Tensorflow机器学习02 ---用一个完整的项目来进行机器学习入门

热门文章

最新文章