汤隆说我家世代打造兵器,破连环马需要用钩镰枪,我会打造。还需要我的姑表哥,金枪手徐宁,因为他会钩镰枪法。汤隆和吴用商议了请徐宁上山的法子,派石迁去偷徐宁的宝贝雁翎锁子甲。
石迁到了东京,打听到徐宁住处,偷偷溜进去。五更天徐宁去上班,石迁从房梁上拿下来了锁子甲,混出了城门,往回走。路上碰到戴宗,戴宗说我先把甲带回山寨,你和汤隆慢慢地来。石迁打开皮匣,取出锁子甲给了戴宗。不久,石迁碰到汤隆,汤隆让石迁走特定的路线,在门上有白粉圈的店里吃饭休息。
徐宁黄昏时候回家,才知道锁子甲被盗了,准备不声张,暗中查找。这时汤隆来拜访,说路上见有人带着一个红羊皮匣子,于是两人一路追赶,在一座古庙见到了石迁。石迁说甲已经被别人先拿走了,只要饶了我,我可以给你带路。于是徐宁就跟着石迁走。
术业有专攻,石迁这是又立了大功了。AI学习也有很强的技术性和时效性,我们可以先通过一个例子来学习。
以102flowers数据集为例训练ResNet50模型
使用飞桨高阶API,使用最少的代码量,实现在102flowers数据集训练ResNet50模型。同时可以一条命令修改成Mnist、Cifar10、Cifar100等数据集,换成其它模型也是只需要一句话代码。
数据集介绍
102flowers数据集是一个专门用于图像分类的数据集,主要涵盖了102种英国常见的花类。每个类别包含40到258张图像,总计包含了大量的图像数据。这些图像在比例、姿势以及光照方面有着丰富的变化,为图像分类任务提供了丰富的素材。官网网址为:https://www.robots.ox.ac.uk/~vgg/data/flowers/102/飞桨自带了该数据集,直接调用即可,会从飞桨站点自动下载数据文件。若是自定义数据集,可参考相关文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/beginner/data_load_cn.html
ResNet模型介绍
ResNet(Residual Neural Network)是一种深度卷积神经网络,在2015年提出。ResNet通过使用残差块(ResNet Block)成功解决了深度网络训练时的梯度消失问题,使得更深的网络能够被训练。ResNet模型在ILSVRC2015比赛中取得了冠军,并在多个视觉任务中表现突出,因此在实践中得到了广泛应用。
根据网络深度,ResNet有18、34、50、101和152层等多种。一直到今天,ResNet依然是使用最广泛的模型。在飞桨中可以用一条命令直接调用该模型,非常简单方便。
训练模型
使用飞桨高层API,在配置好数据集和模型后,只需要两句代码就可以开始训练。完整训练代码
# 导入飞桨PaddlePaddle框架 import paddle # 导入PaddlePaddle的视觉处理模块中的函数,ToTensor用于将图像数据转换为张量格式,Resize用于调整图像大小,Compose用于组合多个转换操作。 from paddle.vision.transforms import ToTensor,Resize, Compose # 导入Flowers数据集 from paddle.vision.datasets import Flowers # 定义了一个转换组合,首先使用Resize将图像大小调整为224x224,然后使用ToTensor将图像转换为张量格式。 transform = Compose([Resize(size=(224, 224)), ToTensor()]) # 加载花朵数据集的训练集和测试集,并应用之前定义的转换组合。 train_dataset = Flowers(mode='train', transform=transform) test_dataset = Flowers(mode='test', transform=transform) # 直接调用飞桨ResNet34模型 resnet = paddle.vision.models.resnet34() # model包含了训练功能 model = paddle.Model(resnet) # 设置训练模型所需的optimizer, loss, metric model.prepare( paddle.optimizer.Adam(learning_rate=0.001, parameters=model.parameters()), paddle.nn.CrossEntropyLoss(), paddle.metric.Accuracy(topk=(1, 2)) ) # 启动训练,20个epochs V100下大约10分钟 model.fit(train_dataset, epochs=20, batch_size=32, log_freq=100) # 启动评估 model.evaluate(test_dataset, log_freq=20, batch_size=64)
最终精度为:
{'loss': [1.3582209348678589], 'acc_top1': 0.6813725490196079, 'acc_top2': 0.8}
到了梁山附近,徐宁被铁叫子乐和用药蒙翻了带上梁山。宋江劝徐宁:我们现在暂居梁山,等待朝廷的招安,希望你和我们一起替天行道!林冲也劝,于是徐宁就同意了。
雷横监造钩镰枪完备,宋江吴用请徐宁教钩镰枪法。有说法:三千甲马登时破,一个英雄指日降。
欲知后事如何,且听下回分解。