不调用库函数,用Python原生代码来实现独热码

本文介绍了独热码的基本概念及其在深度学习中的应用,并提供了一个不使用库函数的Python独热码编码实例。

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

一、独热码简介

独热码,即 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。例如[0,1,0,0]就是一个只有当索引值为1时有效的独热码。

二、独热码在深度学习中的作用

在深度学习中,标签值往往是一个具体的数,但是神经网络的输出层的神经元个数一般是多个,且每个神经元都有一个输出值,为了能根据神经网络的输出预测值和数据的真实标签求出误差值,我们就需要将为具体数值的标签转换为独热码形式,例如将标签值y=3,转换为一个5分类的独热码y_trans=[0,0,0,1,0],假如此刻神经网络的输出为y_pred=[0.1,0.2,0.1,0.5,0.1],我们可以得出均方误差值E=(∑(y_pred[i]-y_trans[i])^2)/5。

三、不调用库函数,用Python原生代码来实现独热码

设列表list1=[[2],[1],[3]],要将其转换为分类数为class_num的独热码形式,代码以6分类为例。

list1=[[2],[1],[3]]
#将[[2],[1],[3]]  转为独热码格式 [[0,0,1...],[0,1,0...],[0,0,0,1...]]
def one_hot(list,class_num):
    result=[]
    for i in range(len(list)):
         list2=[]
         for j in range(class_num):
           if j!=list[i][0]:
              list2.append(0)
           else :
              list2.append(1)
         result.append(list2)
    return result

my_list=one_hot(list1,6)
print("原始列表:",list1)
print("独热码形式的列表:",my_list)

运行结果为:

原始列表: [[2], [1], [3]]
独热码形式的列表: [[0, 0, 1, 0, 0, 0], [0, 1, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0]]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值