一、reduce系列函数(维度操作)
1、tf.reduce_sum( input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None ) //求和
input_tensor:表示输入
axis:表示在那个维度进行sum操作。
keep_dims:表示是否保留原始数据的维度,False相当于执行完后原始数据就会少一个维度。
reduction_indices:为了跟旧版本的兼容,现在已经不使用了。
# 'x' is [[1, 1, 1]
# [1, 1, 1]]
tf.reduce_sum(x) ==> 6
tf.reduce_sum(x, 0) ==> [2, 2, 2]
tf.reduce_sum(x, 1) ==> [3, 3]
tf.reduce_sum(x, 1, keep_dims=True) ==> [[3], [3]]
tf.reduce_sum(x, [0, 1]) ==> 6
2、tf.reduce_mean(input_tensor, reduction_indices=None, keep_dims=False, name=None)//求平均值
input_tensor:表示输入
axis:表示在那个维度进行sum操作。
keep_dims:表示是否保留原始数据的维度,False相当于执行完后原始数据就会少一个维度。
# 'x' is [[1., 2.]
# [3., 4.]]
tf.reduce_mean(x) ==> 2.5 #如果不指定第二个参数,那么就在所有的元素中取平均值
tf.reduce_mean(x, 0) ==> [2., 3.] #指定第二个参数为0,则第一维的元素取平均值,即每一列求平均值
tf.reduce_mean(x, 1) ==> [1.5, 3.5] #指定第二个参数为1,则第二维的元素取平均值,即每一行求平均值
3、tf.reduce_max(input_tensor, reduction_indices=None, keep_dims=False, name=None) //求最大值
# 'x' is [[1., 2.]
# [3., 4.]]
tf.reduce_max(x) ==> 4 #如果不指定第二个参数,那么就在所有的元素中取最大值
tf.reduce_max(x, 0) ==> [3., 4.] #指定第二个参数为0,则第一维的元素取最大值,即每一列求最大值
tf.reduce_max(x, 1) ==> [2, 4] #指定第二个参数为1,则第二维的元素取最大值,即每一行求最大值
4、tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
参数:
shape: 一维的张量,也是输出的张量。
mean: 正态分布的均值。
stddev: 正态分布的标准差。
dtype: 输出的类型。
seed: 一个整数,当设置之后,每次生成的随机数都一样。
name: 操作的名字
5、tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
从正态分布中输出随机值。
参数:
shape: 一维的张量,也是输出的张量。
mean: 正态分布的均值。
stddev: 正态分布的标准差。
dtype: 输出的类型。
seed: 一个整数,当设置之后,每次生成的随机数都一样。
name: 操作的名字。
-------------------------代码--------------
a = tf.Variable(tf.random_normal([2,2],seed=1))
b = tf.Variable(tf.truncated_normal([2,2],seed=2))
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print(sess.run(a))
print(sess.run(b))
输出:
[[-0.81131822 1.48459876]
[ 0.06532937 -2.44270396]]
[[-0.85811085 -0.19662298]
[ 0.13895047 -1.22127688]]
---------------------------------------------------------
二、其他方法
1、tf.matmul(x,y)
x,y矩阵做乘法
2、tf.nn.softmax()//线性代价函数
3、tf.nn.softmax_cross_entropy_with_logits()//表示softmax配合交叉熵函数
4、tf.nn.sigmod_cross_entropy_with_logits()//表示sigmod配合交叉熵函数
5、#在tensorflow1.2中tf.nn.tanh和tf.tanh都可以
tanh是双曲函数中的一个,tanh()为双曲正切。双曲正切函数的导数公式:
input=tf.constant([1,2,3,4],dtype=tf.float32)
#在tensorflow1.2中tf.nn.tanh和tf.tanh都可以
#output=tf.nn.tanh(input)
output=tf.tanh(input)
with tf.Session() as sess:
print(sess.run(output))
sess.close()
输出结果:
[ 0.76159418 0.96402758 0.99505472 0.99932921]
6、tf.cast(a,dtype=tf.bool)
f.cast(a,dtype=tf.bool)
将x的数据格式转化成dtype.例如,原来x的数据格式是bool
a = tf.Variable([1,0,0,1,1])
b = tf.cast(a,dtype=tf.bool)
sess = tf.Session()
sess.run(tf.initialize_all_variables())
print(sess.run(b))
#[ True False False True True]
7、tf.argmax(y,1)
#首先,明确一点,tf.argmax可以认为就是np.argmax。tensorflow使用numpy实现的这个API。
#tf.argmax就是返回最大的那个数值所在的下标。
#argmax返回一维张量中最大的值所在的位置
test = np.array([[1, 2, 3], [2, 3, 4], [5, 4, 3], [8, 7, 2]])
np.argmax(test, 0) #输出:array([3, 3, 1]
np.argmax(test, 1) #输出:array([2, 2, 0, 0]
源码获取方式,关注公总号RaoRao1994,查看往期精彩-所有文章,即可获取资源下载链接
更多资源获取,请关注公总号RaoRao1994