关于张量
张量可以表示0阶到N阶的数组
在TensorFlow中,张量(Tensor)表示某种相同数据类型的多维数据
因此张量有两个重要特征:
- 数据类型
- 数组形状(各个维度的大小)
张量的数据类型
tf.int,tf.float
tf.int32,tf.float32,tf.float64
tf.bool
tf.constant([True,False])
tf.string
tf.constant("Hello Wrold !")
创建Tensor
创建一个最简单的张量
tf.constant(张量内容,dtype=数据类型(可选))
import tensorflow as tf a = tf.constant([1,5],dtype=tf.int64) print(a) print(a.dtype) print(a.shape)
python 3.10 tensorflow-gpu 2.8 | 运行结果
tf.Tensor([1 5], shape=(2,), dtype=int64) <dtype: 'int64'> (2,)
将numpy数据类型转为tensor数据类型
tf.convert_to_tensor(a,dtype=tf.int64)
import tensorflow as tf import numpy as np a = np.arange(0,5) b = tf.convert_to_tensor(a,dtype=tf.int64) print(a) print(b)
python 3.10 tensorflow-gpu 2.8 numpy 1.22.1 | 运行结果
[0 1 2 3 4] tf.Tensor([0 1 2 3 4], shape=(5,), dtype=int64)
通过维度创建一个tensor
创建全为0的张量
tf.zeros(维度)
创建全为1的张量
tf.ones(维度)
创建全为指定值的张量
tf.fill(维度,指定值)
举例
import tensorflow as tf a=tf.zeros([2,3]) b=tf.ones(4) c=tf.fill([2,2],9) print(a) print(b) print(c)
python 3.10 tensorflow-gpu 2.8 numpy 1.22.1 | 运行结果
tf.Tensor( [[0. 0. 0.] [0. 0. 0.]], shape=(2, 3), dtype=float32) tf.Tensor([1. 1. 1. 1.], shape=(4,), dtype=float32) tf.Tensor( [[9 9] [9 9]], shape=(2, 2), dtype=int32)
维度
一维 直接写个数
二维 用[行,列]
多维 用[n,m,j,k……]
生成随机数
生成正态分布的随机数
默认均值为0,标准差为1
tf.random.normal(维度,mean=均值,stddev=标准差)
生成截断式正态分布的随机数(生成的随机数更集中一些)
tf.ranodm.truncated_normal(维度,mean=均值,sttdev=标准差)
举例 对比
import tensorflow as tf d = tf.random.normal([2,3],mean=0.5,stddev=1) # stddev 标准差 e = tf.random.truncated_normal([2,2],mean=0.5,stddev=1) print(d) print(e)
python 3.10 tensorflow-gpu 2.8 numpy 1.22.1 | 运行结果
tf.Tensor( [[ 2.1269822 1.2042918 -0.28122586] [ 0.25896066 0.15369958 0.72224903]], shape=(2, 3), dtype=float32) tf.Tensor( [[ 1.900454 1.7232051 ] [-0.5688374 -0.36629975]], shape=(2, 2), dtype=float32)
生成指定维度的均匀分布的随机数[minval,maxval)
tf.random.uniform(维度,minval=最小值,maxval=最大值) # 前闭后开区间
import tensorflow as tf f = tf.random.uniform([2,3],minval=0,maxval=1) # stddev 标准差 print(f)
python 3.10 tensorflow-gpu 2.8 numpy 1.22.1 | 运行结果
tf.Tensor( [[0.29363596 0.731918 0.8976741 ] [0.13689423 0.53846407 0.23545396]], shape=(2, 3), dtype=float32)