tensorflow 张量

本文详细介绍了TensorFlow中的基本概念,包括张量(多维矩阵)、常量(固定不变的值)、变量(可变的存储单元)以及占位符(用于输入数据)。张量可以表示各种数据类型,常量用于创建固定值的张量,如全零矩阵或随机数组。变量则在神经网络中常作为权重和偏置,可以通过不同方式初始化。占位符则用于提供计算图输入,通过会话运行获取结果。理解这些基础概念对于掌握TensorFlow至关重要。
摘要由CSDN通过智能技术生成

张量

张量,可理解为一个 n 维矩阵,所有类型的数据,包括标量、矢量和矩阵等都是特殊类型的张量。
在这里插入图片描述
在这里插入图片描述

常量

声明一个标量常量:

在这里插入图片描述

一个形如 [1,3] 的常量向量可以用如下代码声明:

在这里插入图片描述

要创建一个所有元素为零的张量,可以使用 tf.zeros() 函数。这个语句可以创建一个形如 [M,N] 的零元素矩阵,数据类型(dtype)可以是 int32、float32 等:

在这里插入图片描述

还可以创建与现有 Numpy 数组或张量常量具有相同形状的张量常量

在这里插入图片描述

创建一个所有元素都设为 1 的张量。下面的语句即创建一个形如 [M,N]、元素均为 1 的矩阵:

在这里插入图片描述

在一定范围内生成一个从初值到终值等差排布的序列:

在这里插入图片描述

相应的值为 (stop-start)/(num-1)。例如:

在这里插入图片描述

从开始(默认值=0)生成一个数字序列,增量为 delta(默认值=1),直到终值(但不包括终值):

在这里插入图片描述

TensorFlow 允许创建具有不同分布的随机张量:
使用以下语句创建一个具有一定均值(默认值=0.0)和标准差(默认值=1.0)、形状为 [M,N] 的正态分布随机数组:
在这里插入图片描述
创建一个具有一定均值(默认值=0.0)和标准差(默认值=1.0)、形状为 [M,N] 的截尾正态分布随机数组:
在这里插入图片描述
要在种子的 [minval(default=0),maxval] 范围内创建形状为 [M,N] 的给定伽马分布随机数组,请执行如下语句:
在这里插入图片描述
要将给定的张量随机裁剪为指定的大小,使用以下语句

在这里插入图片描述

这里,t_random 是一个已经定义好的张量。这将导致随机从张量 t_random 中裁剪出一个大小为 [2,5] 的张量。
很多时候需要以随机的顺序来呈现训练样本,可以使用 tf.random_shuffle() 来沿着它的第一维随机排列张量。如果 t_random 是想要重新排序的张量,使用下面的代码:

在这里插入图片描述
随机生成的张量受初始种子值的影响。要在多次运行或会话中获得相同的随机数,应该将种子设置为一个常数值。当使用大量的随机张量时,可以使用 tf.set_random_seed() 来为所有随机产生的张量设置种子。以下命令将所有会话的随机张量的种子设置为 54:

在这里插入图片描述

TIP:种子只能有整数值。

变量

它们通过使用变量类来创建。变量的定义还包括应该初始化的常量/随机值。下面的代码中创建了两个不同的张量变量 t_a 和 t_b。两者将被初始化为形状为 [50,50] 的随机均匀分布,最小值=0,最大值=10:

在这里插入图片描述

注意:变量通常在神经网络中表示权重和偏置。
下面的代码中定义了两个变量的权重和偏置。权重变量使用正态分布随机初始化,均值为 0,标准差为 2,权重大小为 100×100。偏置由 100 个元素组成,每个元素初始化为 0。在这里也使用了可选参数名以给计算图中定义的变量命名:

在这里插入图片描述

在前面的例子中,都是利用一些常量来初始化变量,也可以指定一个变量来初始化另一个变量。下面的语句将利用前面定义的权重来初始化 weight2:

在这里插入图片描述

变量的定义将指定变量如何被初始化,但是必须显式初始化所有的声明变量。在计算图的定义中通过声明初始化操作对象来实现:

在这里插入图片描述

每个变量也可以在运行图中单独使用 tf.Variable.initializer 来初始化:
在这里插入图片描述

保存变量:使用 Saver 类来保存变量,定义一个 Saver 操作对象:
saver = tf.train.Saver()

占位符

介绍完常量和变量之后,我们来讲解最重要的元素——占位符,它们用于将数据提供给计算图。可以使用以下方法定义一个占位符:

在这里插入图片描述

dtype 定占位符的数据类型,并且必须在声明占位符时指定。在这里,为 x 定义一个占位符并计算 y=2*x,使用 feed_dict 输入一个随机的 4×5 矩阵:

在这里插入图片描述

解读分析

需要注意的是,所有常量、变量和占位符将在代码的计算图部分中定义。如果在定义部分使用 print 语句,只会得到有关张量类型的信息,而不是它的值。
为了得到相关的值,需要创建会话图并对需要提取的张量显式使用运行命令,如下所示:

print(sess.run(t_1))

参考:http://c.biancheng.net/view/1885.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值