💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 1. 强制将tensor转换数据类型 使用: ``` tf.cast(张量名, dtype=数据类型) ``` # 2. 计算张量在维度上的最小、大值 使用: ``` tf.reduce_min(张量名) tf.reduce_max(张量名) ``` 在二维张量中,可以通过调整axis来控制执行维度,其中axis=0表示第一个维度,也就是列。而axis=1表示行。 # 3. 求平均值 使用: ``` tf.reduce_mean(张量名, axis=操作轴) ``` 如果不指定axis就表示整个张量。比如可以指定axis用来求解指定维度的平均值: ``` tf.reduce_mean(a, axis=0) ``` 就表示从列方向上求平均值。 # 3. 求和 ``` tf.reduce_sum(张量名, axis=操作轴) ``` # 4. 表示函数为可训练 使用: ``` tf.Variable(初始值) ``` 被标记为可训练的变量会在反向传播中记录梯度信息,在神经网络中,使用该函数用来标记待训练参数。比如: ``` tf.Variable(tf.random.normal([2, 2], mean=0, stddev=1)) ``` # 5. Tensor的四则运算 按照顺序如下: ``` tf.add(张量1, 张量2) tf.subtract(张量1, 张量2) tf.multiply(张量1, 张量2) tf.divide(张量1, 张量2) ``` 需要注意的是,只有维度相同的张量才能做四则运算。也就是说这里的四则运算其实是对应的元素的四则运算。 # 6. 平方、开方和次方 依次对应: ``` tf.square(张量名) tf.sqrt(张量名) tf.pow(张量名,n次方) ``` 对应的还是对应每个位置的元素进行对应的平方、开方或者次方。 # 7. 矩阵乘法 ``` tf.matmul(矩阵1,矩阵2) ``` 注意到矩阵乘法这里有mat,可以理解为matrix。不要和前面的张量的四则运算高混淆。 # 8. 输入特征和标签配对 在神经网络中的输入为输入特征和标签对,这里提供了对应的函数来进行封装。 ``` tf.data.Dataset.from_tensor_slices((输入特征, 标签)) ``` 该函数,对应numpy或者Tensor格式的均可。比如: ``` features = tf.constant([1, 2, 3]) labels = tf.constant([0, 1, 0]) dataset = tf.data.Dataset_from_tensor_slices((feactures, labels)) ``` # 9. tf.GradientTape 在with结构中,可以使用tf.GradientTape()来实现函数对某个参数的求导运算,比如: ``` with tf.GradientTape() as tape: # 计算过程 grad = tape.gradient(函数, 对谁求导) ``` 这里可以举一个案例: ``` with tf.GradientTape() as tape: # 定义可训练参数 w = tf.Variable(tf.constant(3.0)) # 定义目标函数 fun = tf.pow(w, 2) # 求对w的导数 grad = tape.gradient(fun, w) grad ``` 结果: ``` <tf.Tensor: shape=(), dtype=float32, numpy=6.0> ``` 因为这里目标函数是w^2,求导为2w,带入初始化为3,故而值为6。 # 10. tf.one_hot 我们知道在神经网络的输入部分,都需要数字化的表示,才可以进行计算。所以在分类问题中,通常使用独热码的形式将数据进行输入。在tenforflow中提供了直接将数据变为独热码的方式,也就是tf.one_hot: ``` # 比如数据的标签为1,2,3,4,我们需要将其变为独热码 labels = tf.constant([1,2, 3, 4]) outputs = tf.one_hot(labels, 4) # 这里为4类 outputs ``` 结果: ``` <tf.Tensor: shape=(4, 4), dtype=float32, numpy= array([[0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.], [0., 0., 0., 0.]], dtype=float32)> ``` # 11. softmax 使用tf.nn.softmax来计算概率,也就是累积和然后求比例,然后找到最大的那个softmax值对应的下标,表示其对应的类别。 ``` # 使用softmax函数 wa = tf.constant([1, 2, 3, 4], dtype=tf.float32) # 注意这里只能为float类型 p = tf.nn.softmax(wa) p ``` 结果: ~~~ <tf.Tensor: shape=(4,), dtype=float32, numpy=array([0.0320586 , 0.08714432, 0.23688284, 0.6439143 ], dtype=float32)> ~~~ ## 12. assign_sub 可训练参数可以使用assign_sub来进行自更新,也就是自减。 ![](https://img.kancloud.cn/9b/ac/9bace58b4c9bacd08f91d4e7e7b848b7_704x193.png) 这里需要注意的是,维度还是需要保持一致。因为是对应的元素的自更新。 当然,还有自增,这里不再介绍。 ## 13. tf.argmax 返回指定操作轴的最大值得索引号。 ![](https://img.kancloud.cn/17/a2/17a2c45144d992390dfe19c18642024e_637x221.png)