网站首页 > 技术文章 正文
例如我们处理DNA序列, DNA序列是由 ACGT四个字符产生的字符串。
我们希望 序列 “ACGTTT” 中 A编码为1000, C编码0100,G编码0010 T编码 0001
import torch
>>> aseq="ACGTTT"
# 定义一个字典。数字从0 开始,后面还需要这些数字做索引。
>>> adb={'A':0,'C':1,'G':2,'T':3}
#按照字典adb 将字符映射为数字。
>>> target=[adb[ch] for ch in aseq]
>>> target
[0, 1, 2, 3, 3, 3]
#python的列表转化为 张量
>>> target=torch.tensor(target)
>>> target
tensor([0, 1, 2, 3, 3, 3])
# 开始转化one-hot
#1. 按照序列长度和 编码长度产生0矩阵。
# 这里len(adb),可改为4. 就是说用4长的向量表示一个核苷酸(A、C、G、T)
>>> target_onehot=torch.zeros(target.shape[0],len(adb))
>>> target_onehot
tensor([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
# 2 使用scatter 产生onehot编码。
# scatter() 不改变原来变量值; scatter_() 改变原来变量值。
# scatter_(dim, index, val/src) 这里使用val
# 就是说,在target_onehot 的 列维度(dim=1), 按照
# 索引值 target.unsqueeze(1), 填满
# val 值 1
>>> target_onehot.scatter_(1,target.unsqueeze(1),1)
tensor([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[0., 0., 0., 1.],
[0., 0., 0., 1.]])
# 3 最后的结果
>>> target_onehot
tensor([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[0., 0., 0., 1.],
[0., 0., 0., 1.]])
# 注:
# unsqueeze 帮助target添加一个额外维度,为下一步做索引值使用。
>>> target.unsqueeze(1)
tensor([[0],
[1],
[2],
[3],
[3],
[3]])
猜你喜欢
- 2024-09-25 “千克”“毫升”单位不同怎么办?该是特征缩放上场的时候了
- 2024-09-25 决策树的高级概述 决策树的概念
- 2024-09-25 魔方全能小王子降临:一个完全不依赖人类知识的AI
- 2024-09-25 逻辑解释网络 网络逻辑设计包括哪些
- 2024-09-25 常见20种验证码识别思路 验证码识别平台哪个好
- 2024-09-25 大模型训练之增量预训练参数说明 增量模型适用场景
- 2024-09-25 聊一聊机器学习中的特征转换 特征转化
- 2024-09-25 详解状态机的设计 详解状态机的设计步骤
- 2024-09-25 小白福音!逻辑回归算法入门教程,让你一看就会
- 2024-09-25 Python实现数值型与字符型类别变量的独热编码One-hot Encoding
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)