标量scalar单个实数 | 维度0?? shape:[] |
向量vector n个实数有序集合 | 维度1?? shape:[n] |
矩阵matrix n行m列实数有序集合 | 维度2?? shape[n,m] |
张量tensor 维度大于2数组 | 维度>2每个维度称为轴axis shape[b,w,h,c] |
标量向量矩阵张量 ?统称张量 | |
标量创建 | a=tf.constant(1.2)?? shape:() |
Type(变量) | 查看变量类型 |
张量创建 | tf.constant([1,2,3])? shape(3,) 通过list数据类型传递给tf.constant()函数 |
x.numpy() | 张量方法返回np.array数据类型 |
a=tf.constant([[1,2],[3,4]]) | Shape(2,2)?? dtype=int32/float32…… |
字符串tf.constant(‘zifuchuan’) | Shape:() dtype=string 小写lower() 拼接join() 长度length() 切分split() 调用方法tf.string.lower(字符串变量) |
布尔类型tf.constant(True) | Shape:() dtype=bool |
布尔数组(掩码)tf.constant([True,False]) | Shape:(2,)dtype=bool |
| |
数值精度类型 | tf.int16 tf.int32 tf.int64 tf.float16 tf.float32 tf.float64=tf.double |
创建张量,指定数据精度 | tf.constant(123,dtype=tf.int16) |
Numpy.pi | Pi常量 |
精度转换 | Tf.cast(a,tf.int16) 变量、变为新的精度 定义时指定精度 tf.constant(36,dtype=tf.int16) |
|
- dtype()获取变量精度
a.shape()获取张量shape |
布尔类型和整形相互转换,01与真假相互转换 | a=tf.constant([True,False]) tf.cast(a,tf.int32) tf.bool |
待优化张量(梯度监督变量) 具有name和trainable特有属性 | tf.Variable(a),先创建,在进行优化监督 或者直接建立优化监督张量 |
普通张量 | GradientTape.watch()加入临时跟踪梯度列表,支持自动求导 |
数组、列表创建张量Python列表。Numpy数组都可以创建张量 | tf.convert_to_tensor(列表或者数组numpy)或tf.constant() |
创建全0张量 | tf.zeros()可以创建任意形状的张量 |
创建全1张量 | tf.ones() |
创建与某个张量相同形状的全0全1张量 | tf.ones_like(), tf.zeros_like() |
创建初始化为自定义数值的张量,如全为-1 | tf.fill(shape,value) |
创建正态分布(高斯分布) | tf.random.normal(shape,均值mean,标准差stddev)均值默认值0,标准差默认为1 |
截断正态分布 | tf.random.truncated_normal(shape,mean,stddev) |
均匀分布 | tf.random.uniform(shape,minval最小值,maxval最大值,,dtype)最小默认0.最大默认无,包首不包尾 |
创建序列 | tf.range(start,limit,delta) tf.range(5):01234默认步长为1,初始值0 tf.range(1,5):1234默认为初值和终值,步长为1 tf.range(1,5,2):13 |
标量 | 常用来表示各种误差值,测量指标 准确度(accuracy)精度(precision)召回率(recall) |
向量 | 偏置向量 |
矩阵 | 输入张量[batchsize,特征] |
三维张量 | 典型应用代表序列信号 [b,sequencelen,featurelen] |
四维张量 | [b,h,w,c] |
张量索引 索引编号从0开始 可以进行某一个维度的索引 | 基本索引方式[i][j][k] 逗号分隔索引方式[i,j,k] |
张量切片 Start:end;step开始读取位置结束步长 不同维度之间用,隔开同一维度用:隔开 | 取第一张图片x[0,::] ::表示从开头读到末尾,可简写为: Step为负数:由start开始,逆序读取到stop X[::-1]逆序所有元素 |
维度变换 | 存储数据,以平铺的方式写入内存 |
改变视图(不改变张量的存储) | Tf.Reshape(x,new_shape) shape可以出现-1,表示这个维度长度自动推导,张量总元素数量不变 Reshape未改变数据的存储顺序,维度顺序必须和存储顺序相同 |
获取张量的维度 | x.ndim |
获取张量的形状 | x.shape |
增加维度(不改变张量的存储) | 增加一个长度为1的维度,给原数据添加一个新的维度 tf.expand_dims(x,axis=)在axis轴的索引位置加入一个长度为1的维度 |
删除维度(不改变张量的存储) | 只能删除维度为1的维度,不会改变张量的存储 tf.squeeze(x,axis=)删除axis位置的这个维度 tf.squeeze(x)默认删除所有长度为1的维度 |
交换维度(改变张量的存储顺序,) 视图发生改变 | tf.transpose(x,perm=[原来索引的新存储顺序]) 如变为数量通道行列[0,3,1,2] |
复制数据 创建新的张量,不改变原张量的视图 | Tf.tile(x,multiples) Multiples分别指出了每个维度上数据复制倍数 最后一个维度的复制会在最后一个[]中进行数据的复制 |
自动扩展机制 改变原张量的视图和存储格式 | Tf.broadcast_to(x,new_shape) |
数学运算 | 加减乘除运算符+-*/ 整除//只取结果的整数部分 余除%只取结果的余数部分 |
乘方运算 | Tf.pow(x,a)x的a次方 1/a相当于开a次根号 |
平方运算 | Tf.square(x) |
平方根运算 | Tf.sqrt(x) |
指数运算 | Tf.pow(a,x) Tf.exp(x)e的x次方 |
对数运算 | Tf.math.log()底数为e 其他底数换底公式 Tf.math.log(x)/tf.math.log(a) |
矩阵相乘 | @运算符 Tf.matmul(a,b) 当ab维度都大于2时,选择ab最后两个维度进行相乘 |
张量的拼接(不创建新的维度) | Tf.concat(tensors,axis=) Tensors保留需要拼接张量的列表,axis需要连接的维度索引,除了合并所在维度,其他维度的形状必须相同 |
张量的堆叠(创建新的维度) | Tf.stack(tensors,axis=) 需要堆叠张量的列表,。张量的shape相同,创建的新维度 |
张量的分割 | Tf.split(x,num_or_size_splits=,axis=) 待分割张量,单个数值为等长切割份数,列表表示每一份的长度,分割的维度索引 Tf.unstack(x,axis=)特殊情况,切割长度固定为1,从而这个被分割的维度消失 |
向量范数 | Tf.norm(x,ord=1)L1范数,绝对值之和 Tf.norm(x,ord=2)L2范数,平方和开根号 Tf.norm(x,ord=np.inf)所有元素绝对值的最大值 |
最值,均值,求和 可以求出某个维度上的最大最小值,平均值,和,当没有输入axis参数时,也可以求出全局最大最小均值 | Tf.reduce_min(x,axis=)所需要求解的维度 Tf.reduce_max(x,axis=) Tf.reduce_mean(x,axis=) Tf.reduce_sum(x,axis=) |
最大值,最小值的索引号 多分类输出 | Tf.argmax(x,axis=)求解在axis轴上的最大值的索引 Tf.argmin(x,axis=) |
独热编码 | Tf.one_hot(x,depth=) |
张量比较(将预测结果和真实标签进行比较)其他比较95页 | Tf.equal(pred,y)比较两个张量是否相等,对应元素比较,返回一个布尔张量,然后使用tf.reduce_sum()求出预测正确的数量 |
张量填充(padding)不同长度变为相同的长度,填充满足长度要求 | Tf.pad(x,paddings) |
张量复制 | Tf.tile(x,multiples=[]),multiples分别为每一个维度的复制倍数 |
数据限幅 | Tf.maximum(x,a)数据的下限幅,最小值为a,原来比a小的数据全部变成a Tf.minimum(x,a)数据的上限幅,最大值为a,原来比a大的数据全部变成a Tf.clip_by_value(x,min,max)实现上下限幅 |
tf.gather 根据索引号收集数据,每次只能指定一个维度 | Tf.gather(x,[需要数据的索引组成的列表],axis=) 方便收集索引不连续的,无法快速切片收集的数据适合于没有规则的场所(注意左边的大的维度要包含右边小的维度)每个维度的含义要明确 |
tf.gather_nd 指定每次采样点的多维坐标来实现采样多个点 | Tf.gather_nd(x,[[1,1],[2,2]]) 实现多维坐标指定的数据的收集 |
tf.where | x>0,可以返回比较结果的布尔数组 tf.where(cond,a,b)?? cond 张量,真返回a,假返回b,位置要对应,103页 tf.where(x)返回x中大于0的元素的索引 |
Scatter_nd | Tf.scatter_nd(索引列表,写入数据,白板形状) |
Tf.meshgrid(x,y)或者np.meshgrid(x,y) | 生成二维网格的采样点坐标 |
均匀采样点 | Tf.linspace(min,max,采样点数)生成张量,等分间隔数比采样点数少1,采样点包括max,min两端点 Np.arange(min,max,step)生成数组 区别一个是间距一个是点数,包首不包尾 类比range() |
随机打散 | Dataset.shuffle(buffer size) |