tf.nn.in_top_k

本文通过示例详细解析了TensorFlow中tf.nn.in_top_k函数的工作原理及使用方法,帮助读者掌握如何评估预测结果与真实标签之间的匹配度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tf.nn.in_top_k(predictions,targets,k,name=None)tf.nn.in\_top\_k(predictions, targets, k, name=None)tf.nn.in_top_k(predictions,targets,k,name=None)
predictionspredictionspredictions:你的预测结果(一般也就是你的网络输出值)大小是预测样本的数量乘以输出的维度。
targettargettarget:实际样本类别的标签,大小是样本数量的个数。
kkk:每个样本中前KKK个最大的数里面(序号)是否包含对应targettargettarget中的值。

import tensorflow as tf

X=tf.Variable([[0.4,0.2,0.3,0.1],[0.1,0.1,0.2,0.6],[0.7,0.1,0.1,0.1]])
Y=tf.Variable([2,1,1])
k=tf.placeholder(tf.int32,shape=None)
result=tf.nn.in_top_k(X,Y,k)

with tf.Session() as sess:
    sess.run(tf.initialize_all_variables())
    print(sess.run(X))
    print(sess.run(Y))
    print(sess.run(result,feed_dict={k:1}))
    print(sess.run(result,feed_dict={k:2}))

#结果为:
#[[0.4 0.2 0.3 0.1]
   [0.1 0.1 0.2 0.6]
   [0.7 0.1 0.1 0.1]]
#[2 1 1]
#[False False False]
#[ True False  True]

分析一下结果
k=1k=1k=1时,
XXX[0.40.20.30.1][0.4 0.2 0.3 0.1][0.40.20.30.1]最大元素为0.40.40.4,索引为000,而BBB222,不包含BBB,故FalseFalseFalse
[0.10.10.20.6][0.1 0.1 0.2 0.6][0.10.10.20.6]最大元素为0.60.60.6,索引为333,B是111,不包含BBB,故FalseFalseFalse
[0.70.10.10.1][0.7 0.1 0.1 0.1][0.70.10.10.1]最大元素为0.70.70.7,索引为000,B是111,不包含BBB,故FalseFalseFalse
k=2k=2k=2时,
XXX[0.40.20.30.1][0.4 0.2 0.3 0.1][0.40.20.30.1]最大的两个元素为0.4、0.30.4、0.30.40.3,索引为0、20、202BBB222,故TrueTrueTrue
[0.10.10.20.6][0.1 0.1 0.2 0.6][0.10.10.20.6]最大两个元素为0.6、0.20.6、0.20.60.2,索引为3、23、232BBB111,不包含BBB,故FalseFalseFalse
[0.70.10.10.1][0.7 0.1 0.1 0.1][0.70.10.10.1]最大元素为0.7,0.10.7,0.10.70.1,索引为0、10、101BBB111,包含BBB,故TrueTrueTrue

def conv2d(input_, output_dim, k_h=5, k_w=5, d_h=2, d_w=2, stddev=0.02, # 标准差0.02 #卷积核大小和步长 name="conv2d", padding='REFLECT'): with tf.variable_scope(name): # reflect padding反射填充 if padding == 'REFLECT': in_height, in_width = input_.get_shape().as_list()[1:3] #从形状元组中获取索引为 1 和 2 的维度大小,即高度和宽度。 if (in_height % d_h == 0): pad_along_height = max(k_h - d_h, 0) else: pad_along_height = max(k_h - (in_height % d_h), 0) if (in_width % d_w == 0): pad_along_width = max(k_w - d_w, 0) else: pad_along_width = max(k_w - (in_width % d_w), 0) #算出宽度和高度可填充像素数 pad_top = pad_along_height // 2 pad_bottom = pad_along_height - pad_top pad_left = pad_along_width // 2 pad_right = pad_along_width - pad_left #可填充像素上下分配 input_ = tf.pad(input_, [[0, 0], [pad_top, pad_bottom], [pad_left, pad_right], [0, 0]], "REFLECT")#按上述参数进行反射填充 padding = 'VALID' #不进行额外填充 w = tf.get_variable('w', [k_h, k_w, input_.get_shape()[-1], output_dim], #卷积核高度宽度,输入通道数,输出通道数 initializer=tf.truncated_normal_initializer(stddev=stddev))#使用了截断正态分布初始化器(truncated normal initializer) conv = tf.nn.conv2d(input_, w, strides=[1, d_h, d_w, 1], padding=padding) #进行二维卷积操作 biases = tf.get_variable('biases', [output_dim], initializer=tf.constant_initializer(0.0)) #创建一个可训练变量,初始化偏执为0.0 # conv = tf.reshape(tf.nn.bias_add(conv, biases), conv.get_shape()) conv = tf.nn.bias_add(conv, biases) return conv在这个卷积层定义中加入膨胀卷积
最新发布
03-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值