图像识别中常用到的函数解析
1.损失函数
计算labels和logits之间的交叉熵(cross entropy)
tf.nn.softmax_cross_entropy_with_logits(
_sentinel=None,
labels=None,
logits=None,
dim=-1,
name=None
)
通常使用两个参数:
参数logits 为识别模型的输出结果,logits是作为softmax的输入。也就是不包含softmax层的模型的输出结果。
参数label的含义就是一个分类标签,所有类别的分类的概率,比如说[0.2,0.3,0.5],labels的每一行必须是一个概率分布。
2. 在多个分类上的概率分布情况
tf.nn.softmax(logits, axis=None, name=None, dim=None)
其中参数logits为模型的输出结果。
Softmax的工作则是,它把一个系列数从[-inf, +inf] 映射到[0,1],除此之外,它还把所有参与映射的值累计之和等于1,变成诸如[0.95, 0.05, 0]的概率向量。这样一来,经过Softmax加工的数据可以当做概率来用。
3. tf.reduce_mean()通过张量的维数计算元素的平均值
tf.reduce_mean(input_tensor, reduction_indices=None, keep_dims=False, name=None)
4.函数 tf.cast()
cast(
x,
dtype,
name=None
)
将x的数据格式转化成dtype.例如,原来x的数据格式是bool, 那么将其转化成float以后,就能够将其转化成0和1的序列。反之也可以。例如:
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]
5.tf.equal(A,B)
A = [[1,3,4,5,6]]
B = [[1,3,4,3,2]]
with tf.Session() as sess:
print(sess.run(tf.equal(A, B)))
#输出:[[ True True True False False]]
该函数返回的是一个布尔类型的结果
6.优化器
tf.train.AdamOptimizer(learning_rate= ).minimize(cost)
参数cost是损失函数的值