tf.argmax axis
y_pre = [[5,1,1,0,1],[2,3,-4,5,6]]
session.run(tf.arg_max(y_pre,1))
array([0, 4], dtype=int64)
y_pre
session.run(tf.arg_max(y_pre,0))
array([0, 1, 0, 1, 1], dtype=int64)
0是纵轴比较,1是横向比较
tf.cast
correct = [[ True,False ,True],[False , True ,True]]
session.run(tf.cast(correct,tf.float32))
array([[ 1., 0., 1.],
[ 0., 1., 1.]], dtype=float32)
)
session.run(tf.reduce_mean(tf.cast(correct,tf.float32)))
0.66666669
tf.equal()
import tensorflow as tf
import numpy as np
A = [[1,3,4,5,6]]
B = [[1,3,4,3,2]]
with tf.Session() as sess:
print(sess.run(tf.equal(A, B)))
truncated_normal
作为tensorflow里的正态分布产生函数,这两个函数的输入参数几乎完全一致,
而其主要的区别在于,tf.truncated_normal的输出如字面意思是截断的,而截断的标准是2倍的stddev。
举例,当输入参数mean = 0 , stddev =1时,
使用tf.truncated_normal的输出是不可能出现[-2,2]以外的点的,
而如果shape够大的话,tf.random_normal却会产生2.2或者2.4之类的输出。
在计算损失时,通常会用到reduce_sum()函数来进行求和,但是在使用过程中常常会搞不清楚具体是怎样进行计算的,通过查阅资料,逐渐搞清楚了这个函数的用法,下面就来详细解释一下。
在TensorFlow官方文档中有这样的解释:
其实在reduce_sum()中,是从维度上去考虑的。其中的参数reduction_indices很容易搞蒙圈,上个图加深理解吧
其实在reduce_sum()中,是从维度上去考虑的。其中的参数reduction_indices很容易搞蒙圈,上个图加深理解吧。
调用reduce_sum(arg1, arg2)时,参数arg1即为要求和的数据,arg2有两个取值分别为0和1,通常用reduction_indices=[0]或reduction_indices=[1]来给arg2传递参数。从上图可以看出,当arg2 = 0时,是纵向对矩阵求和,原来矩阵有几列最后就得到几个值;相似地,当arg2 = 1时,是横向对矩阵求和,原来矩阵有几行最后就得到几个值;当省略arg2参数时,默认对矩阵所有元素进行求和,最后得到一个值。
看到这里,函数名的前缀为什么是reduce_其实也就很容易理解了,reduce就是“对矩阵降维”的含义,下划线后面的部分就是降维的方式,在reduce_sum()中就是按照求和的方式对矩阵降维。那么其他reduce前缀的函数也举一反三了,比如reduce_mean()就是按照某个维度求平均值,等等。
原文:https://blog.csdn.net/chengshuhao1991/article/details/78545723