张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数)->得到模型。
张量(tensor):多维数组(列表) 阶:张量的维数。
数据类型: tf.float32 tf.int32 bool string
创建张量的4种方式 1. Constant(恒定,在应用中该类型的变量通常是只读,不可修改的)张量 constant (张量的内容,dtype=数据类型(可选)) 2 . tf. convert_to_tensor(数据名,dtype=数据类型(可选)) (转换)
3.创建全为0的张量 tf.zeros(纬度) 创建全为1的张量 t f.ones(纬度) 创建全为指定值的张量 tf.fill(维度,指定值) 一维 直接写个数 二维 用[行,列] 4. 生成正态分布的随机数,默认均值为0,标准差为1 tf.random.normal(维度,mean=均值,stddev=标准差) 生成截断式正态分布的随机数: tf.random.truncated_normal(维度,mean=均值,stddev=标准差) 生成均匀分布随机数 tf.random.uniform(维度,minval=最小值,maxval=最大值)
计算图:graph:搭建神经网络的计算过程,只搭建,不运算。
参数是指—>线上的权重w,用变量表示。随机给初值
常用函数: 1.强制数据转化数据类型。 tf.cast(张量名,dtype=数据类型) 2.计算张量维度上元素的最小值 tf.reduce_min(张量名) 3.计算张量维度上元素的最大最。 tf.reduce_max(张量名) 4.axis =0 对一个维度进行操作 =1 对第二个维度操作 5.计算张量沿着维度的平均值 tf.reduce_mean (张量名,axis=操作轴) 6.计算张量沿着指定维度的和 tf.reduce.sum(z张量名,axis=操作轴) 7.tf.Variable(初始值) 可以将变量标记为“可训练”,被标记的变量会在反向传播中记录梯度信息,神经网络训练中,通常用该函数标记待训练的参数。 tf.Variable(初始值) w=tf.Variable(tf.random,normal([2,2],mean=0,stddev=1)) 8.tf.data.Dataset.from_tensor_slices 切分传入张量的第一维度,生成输入特征/标签对,构建数据集 data=tf.data.Dataset.from_tensor_slices(输入特征,标签)) 9.tf.GradientTape gradient求出张量的梯度 with tf.GradientTape( ) as tape: 若干个计算过程 gard=tape.gradient(函数,对谁求导) 10.enumerate Enumerate是python的内建函数,他可以遍历每个元素(如列表,元祖或字符串),组合为:索引 元素,常在for循环中使用 enumerate(列表名) 11. Tf.one_hot:在分类问题中,常用独热码做标签, 标记类别:1表示是,0表示非。 tf.one_hot(带转换数据,depth=几分类) 12. tf.nn.softmax tf.nn.softmax(x)使输出符合概率分布。 13.assign_sub 赋值操作,更新参数的值并返回 调用assign_sub前,先用tf.Variable定义变量w为可训练(可自更新)。 w.assign_sub(w要自减的内容) 14. tf.argmax 返回张量沿指定维度最大的索引。
关于学习率:不要太大。太大会在最优模型左右摇摆。太小会叠代太多次