one-hot 嵌入编码

从文件读出来的数据格式为dataframe,要转化为tensor

dataframe = pd.DataFrame([[1, 2, 3],
                          [4, 5, 6], ])
print(torch.tensor(data=dataframe.values))

将label转为one-hot的代码

label_one_hot = F.one_hot(x.to(torch.int64), 40)
label_one_hot = F.one_hot(x.to(torch.float32), 40)

进行one-hot编码时,确保词汇表里都是数字整数,如果有字母,小数等需要:
1.定义一个字母到索引的映射(字典),这样每个字母都会有一个唯一的索引。
2.创建一个函数,将二维矩阵中的每个字母转换为它们对应的索引。
3.使用这些索引,创建一个one-hot编码矩阵,其中每个字母都表示为一个向量,该向量在对应字母的索引位置为1,其余位置为0。

import torch

# 假设我们的矩阵是以下这样的,其中每个元素是一个字母
matrix = [['a', 'b'], ['c', 'd'], ['a', 'c']]

# 创建一个字母到索引的映射
alphabet = 'abcdefghijklmnopqrstuvwxyz'
char_to_ix = { char:ix for ix, char in enumerate(alphabet) }

# 获取矩阵的维度
num_rows = len(matrix)
num_cols = len(matrix[0])

# 获取one-hot编码的向量长度,即不同字母的数量
num_classes = len(char_to_ix)

# 初始化一个零张量,用于存储one-hot编码结果
# 维度是 [矩阵高度, 矩阵宽度, 字典大小]
one_hot_matrix = torch.zeros(num_rows, num_cols, num_classes)

# 遍历矩阵并填充one-hot编码张量
for i in range(num_rows):
    for j in range(num_cols):
        # 得到当前字母对应的索引
        index = char_to_ix[matrix[i][j]]
        # 将对应的位置设为1
        one_hot_matrix[i, j, index] = 1

print(one_hot_matrix)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值