JiangHuiKai
JiangHuiKai
发布于 2026-03-18 / 5 阅读
0
0

开始简单的训练

#AI

数据集

创建训练集

  • 数据的返回形式是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,对齐长度


评论