TensorFlow2.0张量的典型应用

1.标量

标量的典型用途之一是误差值的表示、各种测量指标的表示,比如准确度,精度和召回率等。

import tensorflow as tf

# 随机模拟网络输出
out = tf.random.uniform([4, 10])
# 随即构造样本真实标签
y = tf.constant([2, 3, 2, 0])
# one-hot编码
y = tf.one_hot(y, depth=10)
# 计算每个样本的MSE
loss = tf.keras.losses.mse(y, out)
# 平均MSE
loss = tf.reduce_mean(loss)
print(loss)

tf.Tensor(0.3360483, shape=(), dtype=float32)

2.向量

向量是一种非常常见的数据载体,如在全连接层和卷积神经网络层中,偏置张量𝒃就
使用向量来表示。

例如 2 个输出节点的网络层,我们创建长度为 2 的偏置向量𝒃,并累加在每个输出节点上:

# 模拟获得激活函数的输入z
z = tf.random.normal([4, 2])
print(z)
# 模拟偏置向量
b = tf.ones([2])
print(b)
# 累加偏置
z = z + b
print(z)

tf.Tensor(
[[-0.38646775  0.5014004 ]
 [-1.5671092  -0.47123888]
 [ 0.13978423  0.7581109 ]
 [ 0.315308   -0.8128488 ]], shape=(4, 2), dtype=float32)
tf.Tensor([1. 1.], shape=(2,), dtype=float32)
tf.Tensor(
[[ 0.61353225  1.5014005 ]
 [-0.5671092   0.52876115]
 [ 1.1397842   1.7581109 ]
 [ 1.315308    0.1871512 ]], shape=(4, 2), dtype=float32)

另外,可以通过高层接口Dense()方式直接创建的网络层,张量W和b存储在类的内部,由类自动创建并管理。可以通过全连接层的 bias 成员变量查看偏置变量b。

3.矩阵

矩阵也是非常常见的张量类型,比如全连接层的批量输入𝑋 = [𝑏, 𝑑𝑖𝑛],其中𝑏表示输入样本的个数,即 batch size,𝑑𝑖𝑛表示输入特征的长度。

# 创建特征长度为 4,一共包含 2 个样本的输入数据
x = tf.random.normal([2,4])
# 定义W张量
# 令全连接层的输出节点数为 3,则它的权值张量 W 的 shape 为[4,3]
w = tf.ones([4, 3])
# 定义b张量
b = tf.zeros([3])
# x@w+b运算
o = x@w + b
o

<tf.Tensor: id=218, shape=(2, 3), dtype=float32, numpy=
array([[-0.6558767 , -0.6558767 , -0.6558767 ],
       [-0.01086588, -0.01086588, -0.01086588]], dtype=float32)>

x@w+b 网络层称为线性层,在 TensorFlow 中可以通过 Dense类直接实现,Dense 层也称为全连接层。我们通过 Dense 类创建输入 4 个节点,输出 3 个节点的网络层,可以通过全连接层的 kernel 成员名查看其权值矩阵 W:

import tensorflow as tf 
from keras import layers
# 定义全连接层输出结点为3
fc = layers.Dense(3)
# 定义全连接层的输入结点为4
fc.build(input_shape=(2, 4))
# 通过kernel成员名查看其权值矩阵W
fc.kernel

<tf.Variable 'kernel:0' shape=(4, 3) dtype=float32, numpy=
array([[-0.32323658, -0.29640782,  0.27804315],
       [ 0.57349694, -0.45690656,  0.41877365],
       [ 0.7450305 ,  0.39951694,  0.072891  ],
       [-0.2107293 ,  0.5728272 , -0.20536023]], dtype=float32)>

4.三维张量

三维的张量一个典型应用是表示序列信号,它的格式是:
𝑋 = [𝑏, 𝑠𝑒𝑞𝑢𝑒𝑛𝑐𝑒 𝑙𝑒𝑛, 𝑓𝑒𝑎𝑡𝑢𝑟𝑒 𝑙𝑒𝑛]

其中𝑏表示序列信号的数量,sequence len 表示序列信号在时间维度上的采样点数,feature len 表示每个点的特征长度。

这个可以通过IMDB 电影评价数据集自行理解,比如x_train 张量的 shape 为[25000,80],其中 25000 表示句子个数,80 表示每个句子共 80 个单词,每个单词使用数字编码方式。我们通过 layers.Embedding 层将数字编码的单词转换为长度为 100 个词向量:

这样训练集的大小即为 TensorShape([25000, 80, 100])

4.四维张量

大于 4 维的张量一般应用的比较少。

4 维张量在卷积神经网络中应用的非常广泛,它用于保存特征图(Feature maps)数据,格式一般定义为[b, h, w, c]。

其中𝑏表示输入的数量,h/w分布表示特征图的高宽,𝑐表示特征图的通道数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值