mask函数生成的具体内部细节方法
tf.sign()
等价于numpy.sign,除了NaN.
sign(
x, # 一个tensor或者sparseTensor
name=None # 可选
)
返回数字符号的元素指示
如果x < 0
,则有 y = sign(x) = -1
;如果x == 0
,则有 0 或者tf.is_nan(x)
;如果x > 0,则有1.
# 正整数
tf.sign(121) ---> 1
# 正浮点数
tf.sign(121.1) ---> 1.0
# 负整数
tf.sign(-121) ---> -1
# 负浮点
tf.sign(-121.7) ---> -1.0
对于NaN
和0输入返回零.
tf.reduce_sum()
关于reduce_sum()
或者求和、求整、求平均等等这样的函数,一定要明白axis
的含义,这里的axis
和numpy
中的mean()
有一些不同。
可以粗略的理解为 :
- 在
np.mean()
中axis是几,那就表明哪一维度被压缩成1。 - 在
tf.reduce_sum()
:axis是几,那表明哪一维度被删除掉。
举例
x = np.random.randn(3,4)
array([[-0.27169034, -1.29395748, -0.83626077, -0.73862962],
[-0.8269278 , -1.32515378, -0.27239636, -0.49199163],
[-0.87840893, 0.73217269, -0.59406828, 0.26069466]])
# 测试mean求平均函数
print(np.mean(x, axis=0, keepdims=True))
print(np.mean(x, axis=1, keepdims=True))
[[-0.65900903 -0.62897953 -0.56757514 -0.32330886]] # (1, 4)
[[-0.78513456] # (3, 1)
[-0.72911739]
[-0.11990246]]
# 测试reduce_mean
x_ = tf.convert_to_tensor(x)
sess.run(tf.reduce_sum(x_,axis=0))
# outputs
[ 0.20910891 -3.74189456 -0.5715151 0.97240834]
# 维度(4)
'''
证明了
1. 在`np.mean()`中**axis是几,那就表明哪一维度被压缩成1。**
2. 在`tf.reduce_sum()`:**axis是几,那表明哪一维度被删除掉。**
'''
这样的思想目前适用于所有的情况。
tf.expand_dims()
众所周知的扩展用法,而且只能在边上或者中间进行扩展
例如某个矩阵维度是[2,3,4]
,只能在0,1,2,3
进行扩展。而且扩展位置维度必然是1,shape
会增加。
例:
# 例1
x.shape # [2,3,4]
tf.expand_dims(x,-1) # [2,3,4,1]
# 例2
tf.expand_dims(x,1) # [2,1,3,4]
tf.abs()
众所周知的求绝对值的方法,不管是多少维度,所有元素都变成绝对值。
tf.sign()
众所周知的,啊,不好意思,类似三元选择
tf.sign(x, name=None)
作用是:
if x > 0: return 1
elif x < 0 : return -1
elif x = 0 : return 0
tf.title()
扩展,众所周知的扩展,shape
不变