AI 炼丹系列(Python): 深度学习从练气到化神,是否结丹看你的(1)

本文介绍了如何使用PyTorch和TensorFlow库实现中文手写识别的深度学习模型,包括数据预处理、自定义数据集、模型训练(包括全连接层的TorchClassifier和卷积层的TFClassifier),以及微调方法的比较。作者强调了适应问题复杂度的模型选择对训练时间和预测精度的影响。

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

问题:

1. 深度学习训练的常规步骤
2. 微调模型的几个思考方向
3. 构建自己的数据集用于微调大模型
4. 各种微调方式的实现

编写代码

先用一个简单的中文手写识别的深度学习例子来说明训练的过程,这里分别使用PyTorch和TenserFlow来实现,以便比较两个工具库的不同风格。

**Talk is cheap, Show code.**

数据存放的路径:总共15000张图片,可以去kaggle.com下载 <https://www.kaggle.com/datasets/gpreda/chinese-mnist/data>

图片文件名最后一个数字和图片内容中的文字对应关系是:

["零一二三四五六七八九十百千万亿"] -> index + 1

按咱的惯例,定义数据路径:

cur_path = os.getcwd()

class DataPathEnum(str, Enum):
    ZH_HANDWRITTING_IMG_DIR = "chinese_handwritting/images"
    GPT2XL_TRAIN_DATA_DIR = "gpt2xl"
    MODEL_CHECKPOINT_DIR = "checkpoints"

    def __str__(self):
        return os.path.join(cur_path, "data", self.value)

然后定义两个类库都可以使用的数据基类:


IMAGE_DIR = str(DataPathEnum.ZH_HANDWRITTING_IMG_DIR)

# image = 64 * 64
class HWData():

    def __init__(self) -> None:
        self.image_files = os.listdir(IMAGE_DIR)
        self.character_str ="零一二三四五六七八九十百千万亿"
        self.image_folder:str = IMAGE_DIR
        
    # 获取图片路径和标签
    def get_image_path_vs_lable(self, index):
        image_file = self.image_files[index]
        image_path = os.path.join(self.image_folder, image_file)
        label = int(image_file.split(".")[0].split("_")[-1]) -1
        return label, image_path
        
    # 在ipynb文件展示图片并显示标签,以便和预测的结果进行比较
    def plot_image(self, index):
        label, image_path = self.get_image_path_vs_lable(index)
        image = Image.open(image_path)

        plt.title("label: " + str(label) + "/" + self.character_str[label])
        plt.imshow(image)

先用PyTorch库来操作, 继承自torch.utils.data.Dataset实现自定义数据集,引入图像处理torchvision库。


class HWDataset(HWData, Dataset):

    def __init__(self) -> None:
        super().__init__()
        self.transform = torchvision.transforms.ToTensor()
    
    # 实现基类方法
    def __len__(self):
        return len(self.image_files)
        
    # 实现基类方法
    def __getitem__(self, index) -> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值