tf 张量运算
四则运算
算术操作 | 描述 |
---|---|
tf.add(x, y) | 将 x 和 y 逐元素相加 |
tf.subtract(x,y) | 将 x 和 y 逐元素相减 |
tf.multiply(x, y) | 将 x 和 y 逐元素相乘 |
tf.dvide(x,y) | 将 x 和 y 逐元素相除 |
tf.math.mod(x, y) | 对 x 逐元素取模 |
加减乘除法运算,都是这两个张量逐元素的运算,并且要求各个张量中的元素数据类型必须一致。
幂指数运算
算术操作 | 描述 |
---|---|
tf.pow(x, y) | 对 x 求 y 的幂次方 |
tf.square(x) | 对 x 逐元素求计算平方 |
tf.sqrt(x) | 对 x 逐元素开平方根 |
tf.exp(x) | 计算 e 的 x 次方(x 为浮点数) |
tf.math.log(x) | 计算自然对数底数为 e |
开平方根函数,要求参数是浮点数:tf.pow(x, y)(其中 y<1)、tf.sqrt、tf.exp(x)
自然指数和自然对数运算
tf.exp 和 tf.math.log 也要求张量是浮点数。 tensorflow 只提供了自然对数,没有提供其他底数的对数。如需使用,可以采用换底公式来计算。
![16152544294725](https://blog-1259556217.cos.ap-chengdu.myqcloud.com/image/16152544294725.jpg)
指数运算和对数运算不在同一个模块中,以及没有提供以其他自然数为底的对数运算
其他运算
函数 | 描述 |
---|---|
tf.sign(x) | 返回 x 的符号 |
tf.abs(x) | 对 x 逐元素求绝对值 |
tf.negative(x) | 对 x 逐元素求相反数,y=-x |
tf.reciprocal(x) | 取 x 的倒数 |
tf.logical_not(x) | 对 x 逐元素求的逻辑非 |
tf.ceil(x) | 向上取整 |
tf.floor(x) | 向下取整 |
tf.rint(x) | 取最接近的整数 |
tf.round(x) | 对 x 逐元素求舍入最接近的整数 |
tf.maximum(x, y) | 返回两 tensor 中的最大值 |
tf.minimum(x, y) | 返回两 tensor 中的最小值 |
运算符 | 构造方法 | 运算符 | 构造方法 | |
---|---|---|---|---|
x+y | tf.add( ) | x&y | tf.logical_and() | |
x-y | t. subtract() | x | y | tf.logical_or() |
x*y | tf.multiply() | x^y | tf.logical_xor() | |
x/y(python2.0) | tf.divide() | ~X | tf.logical_not() | |
x/y(python3.0) | tf.truediv() | x<y | tf.less() | |
x//y(python3.0) | floordiv() | X<=y | tf.less_ equal() | |
x%y | tf.math.mod() | x>y | tf.greater() | |
x**y | tf.pow() | X>=y | tf.greater_equal() | |
-x | tf.neg() | |||
abs(x) | tf.abs() |
广播机制:要求两个张量的最后一个维度相等。 当张量和一个数字进行运算时,会将这个数字值广播到张量的各个元素。
张量和 NumPy 数组之间的相互转换
- NumPy 数组转化为张量:tf.constant();tf.convert_to_tensor
- 张量转换为 NumPy 数组:Tensor.numpy()
当张量和 NumPy 数组共同参与运算时:
- 执行 TensorFlow 操作,那么 TensorFlow 将自动的把 NumPy 数组转换为张量
- 执行 NumPy 操作,那么 NumPy 将自动的张量转换为 NumPy 数组
- 只要操作数中有一个 Tensor 对象,就把所有的操作数都转化为张量,然后再进行运算。
张量乘法
元素乘法:tf.multiply(value_a,value_a), * 运算符 向量乘法:tf.matmul(value_a,)value_a, @ 运算符 多维向量乘法采用广播机制,最后两维相乘,前面维度维度不变。 当相乘张量的维度都大于 2 时,最后两维相乘,前面维度维度不变。
注意:tf.range() 和 np.arange() 默认的 dtype 不一样,numpy.arange
默认 int64, tf.range 默认 32.
数据统计:求张量在某个维度上、或者全局的统计值
函数 | 描述 |
---|---|
tf.reduce_sum(input_tensor, axis) | 求和 |
tf.reduce_mean(input_tensor, axis) | 求平均值 |
tf.reduce_max(input_tensor, axis) | 求最大值 |
tf.reduce_min(input_tensor, axis) | 求最小值 |
如果张量元素为 int, 那么均值也会舍为 int,如果希望精确地得到浮点数均值,有两种方式:
- 定义张量的
dtype=tf.float32
等浮点类型 - 如果定义时,使用了整数,可以在调用
tf.reduce_mean()
时, 采用tf.cast(values, tf.flaot32)
来将张量值转换为浮点数
![16152605253799](https://blog-1259556217.cos.ap-chengdu.myqcloud.com/image/16152605253799.jpg)
求最值的索引
tf.argmax(), tf.argmin()
![16152610087523](https://blog-1259556217.cos.ap-chengdu.myqcloud.com/image/16152610087523.jpg)