数据集
创建训练集
数据的返回形式是tensor张量
创建指定形状的方法
借助Numpy
np.random.rand(),数据均匀分布,
np.random.randn(),数据正态分布
list和tensor互转
tensor(List) 转张量
tensot.tolist() 转列表
直接创建:
zeros , ones , randn,rand
def get_train_data(count, in_features):
"""
返回训练数据集和标签,直接以张量大小返回
:return:
"""
x = np.random.rand(count, in_features) # count,n
y = np.argmax(x, axis=1) # count
return torch.from_numpy(x).float(), torch.from_numpy(y).long()迭代数据集
最简单的方法就是切片,每次迭代一个batch。
def iter_data_set(x, y, batch):
# 按照batch迭代
length = len(x)
for i in range(0, length, batch):
yield x[i:i + batch], y[i:i + batch]训练框架
定好模型的结构,输入维度、隐藏层、输出维度(分类数)
定好优化器,损失函数
定好评估指标,比如准确率,考虑计算方式
定好训练的策略,比如早停、固定epoch
定好模型的输出结果,比如log日志、训练图像等
参考: https://gitee.com/jiang_hui_kai/bdai/tree/master/prelearning/week1
保存模型
保存模型的权重state_dict,而不是保存整个模型,会有更好的兼容性。
torch.save(model.state_dict(), 'weights.pth') # 保存
model.load_state_dict(torch.load('weights.pth')) # 加载
NLP
embedding
将编制好顺序的词表映射为特定向量。
特殊字符;
unk:面对未知字符
pad:补齐batch,对齐长度