1.参数
2.说明
参数input为n维数组,n是分类的个数
label为一个分类值,
输入中最大值的下标对应的label值就是正确结果
[inferencer6, feed_target_names6, fetch_targets6] = fluid.io.load_inference_model( ‘/bot11.model‘, exe) cnt = 0 def pred(o,t,id,program,cnt,infos): a = fluid.create_lod_tensor(np.array([[i] for i in o[0]]),[[len(o[0])]],place) b = fluid.create_lod_tensor(np.array([[i] for i in o[1]]),[[len(o[1])]],place) c = fluid.create_lod_tensor(np.array([[i] for i in o[2]]),[[len(o[2])]],place) d = fluid.create_lod_tensor(np.array([[i] for i in o[3]]),[[len(o[3])]],place) results = exe.run(program,feed={‘a‘: a,‘b‘: b, ‘c‘: c,‘d‘: d}, fetch_list=fetch_targets6,return_numpy=False) if np.argmax(results[0]) != t: cnt[0] += 1 print(id,t,np.argmax(results[0]),cnt[0],infos[id-1][-1]) return results
3.该OP计算输入input和标签label间的交叉熵,可用于计算硬标签或软标签的交叉熵。
硬标签交叉熵算法:若soft_label = False, label[i1,i2,...,ik]label[i1,i2,...,ik] 表示每个样本的硬标签值:
output[i1,i2,...,ik]=−log(input[i1,i2,...,ik,j]),label[i1,i2,...,ik]=j,j!=ignore_indexoutput[i1,i2,...,ik]=−log(input[i1,i2,...,ik,j]),label[i1,i2,...,ik]=j,j!=ignore_index
软标签交叉熵算法:若soft_label = True, label[i1,i2,...,ik,j]label[i1,i2,...,ik,j] 表明每个样本对应类别j的软标签值:
output[i1,i2,...,ik]=−∑jlabel[i1,i2,...,ik,j]∗log(input[i1,i2,...,ik,j])
原文:https://www.cnblogs.com/yangyang12138/p/12764975.html