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)) 


目录
打赏
0
0
0
0
51
分享
相关文章
TensorFlow入门指南:基础概念与安装
【4月更文挑战第17天】TensorFlow入门指南介绍了该流行深度学习框架的基础概念和安装步骤。核心概念包括张量(多维数组)、计算图(表示计算任务的图结构)、会话(执行环境)以及变量(存储模型参数)。安装TensorFlow可通过pip或conda,GPU支持需额外条件。安装成功后,通过Python验证版本即可开始使用。
揭秘混合开发新趋势:Uno Platform携手Blazor,教你一步到位实现跨平台应用,代码复用不再是梦!
【8月更文挑战第31天】随着前端技术的发展,混合开发日益受到开发者青睐。本文详述了如何结合.NET生态下的两大框架——Uno Platform与Blazor,进行高效混合开发。Uno Platform基于WebAssembly和WebGL技术,支持跨平台应用构建;Blazor则让C#成为可能的前端开发语言,实现了客户端与服务器端逻辑共享。二者结合不仅提升了代码复用率与跨平台能力,还简化了项目维护并增强了Web应用性能。文中提供了从环境搭建到示例代码的具体步骤,并展示了如何创建一个简单的计数器应用,帮助读者快速上手混合开发。
145 0
深度学习入门:使用Python和TensorFlow构建你的第一个神经网络
【8月更文挑战第31天】 本文是一篇面向初学者的深度学习指南,旨在通过简洁明了的语言引导读者了解并实现他们的第一个神经网络。我们将一起探索深度学习的基本概念,并逐步构建一个能够识别手写数字的简单模型。文章将展示如何使用Python语言和TensorFlow框架来训练我们的网络,并通过直观的例子使抽象的概念具体化。无论你是编程新手还是深度学习领域的新兵,这篇文章都将成为你探索这个激动人心领域的垫脚石。
使用TensorFlow进行深度学习入门
【5月更文挑战第18天】本文介绍了TensorFlow深度学习入门,包括TensorFlow的概述和一个简单的CNN手写数字识别例子。TensorFlow是由谷歌开发的开源机器学习框架,以其灵活性、可扩展性和高效性著称。文中展示了如何安装TensorFlow,加载MNIST数据集,构建并编译CNN模型,以及训练和评估模型。此外,还提供了预测及可视化结果的代码示例。
使用TensorFlow进行深度学习入门
【5月更文挑战第11天】本文引导读者入门TensorFlow深度学习,介绍TensorFlow——Google的开源机器学习框架,用于处理各种机器学习问题。内容包括TensorFlow安装(使用pip)、核心概念(张量、计算图和会话)以及构建和训练简单线性回归模型的示例。通过这个例子,读者可掌握TensorFlow的基本操作,包括定义模型、损失函数、优化器以及运行会话。
TensorFlow 初步:深度学习模型构建入门
TensorFlow 是由 Google Brain 团队开发的深度学习框架,它提供了一种高效且灵活的方式来实现和训练各种深度学习模型。本文将引导你通过 TensorFlow 的基础功能,帮助你构建你的第一个深度学习模型。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等