前言
《耐能KL520的Python程序雕龙小技》
Part-005:
By 神樱AI团队
2022/7/01
为KL520推论后,添加Softmax运算
说明:
& 二元分类(Binary Classification)只要表现于最后一层的FC层(即全连接层)。
& FC层的标准实践机制,就是Pytorch的nn.Linear()。
& 实作途径有二:
- 如果nn.Linear()的输出层是2个神经元,就可以搭配Softmax()激活函数,来时作二元分类。
- 如果nn.Linear()的输出层是1个神经元,就可以搭配Sigmoid()激活函数,来时作二元分类。
& 然而,在KL520推论时,只输出最后nn.Linear()层的神经元的值。
& 并没有再经由Softmax()激活函数计算。
& 所以并非输出Softmax()计算之后的值。
&于是,我们需要自己拿Softmax()来计算之,才是正确的分类(条件)机率值。
一、从训练模型出发
1、准备测试资料
& 本范例使用两个图像集(Dataset):
& 两类别,各有50张图像:
& 所以,训练数据集共有100个样本。
2、最典型的程序范例
& 使用nn.Linear()搭配Softmax()函数。
& 指令:
& 这迁移ResNet50的预训练模型。
& 添加上自己的FC层,指令:
& 这nn.Linear()的输出层是2个神经元,搭配Softmax()激活函数。
& 程序代码:
& 执行它,就展开训练,输出:
& 这也汇出onnx档案。
& 经由耐能toolchain进行转换优化,生成*.nef档案:
& 就能在KL520上运行推论了。
3、撰写App来引导推论
& 现在就来撰写一支myApp.py来引导推论。
& 此范例程序代码:
& 在KL520上执行这支App,就进行推论,而输出:
& 由于KL520推论输出的值,是nn.Linear()层的输出神经元的值。并没有经过Softmax()的转换。
& 于是,就在上述myApp.py里,增添一行指令:
& 修改完毕了。
& 重新执行这myApp.py程序。
& 就输出正确预测(推论)结果了,如下:
& 于是,顺利实作完成了。
& 最后,感谢您阅读本篇文章。本篇文章摘自【AI学习杂志】。
& 与神樱AI团队联络:misoo.tw@gmail.com。
◆◆◆
总结
更多资讯可私信,或者关注!
在个人主页,也可学习更多:
1、《关于NCS2+Openvino》: 、http://t.csdn.cn/452Tz
2、《建模_Unet_GAN》:http://t.csdn.cn/am37C
3、《彩绘GAN模型》:http://t.csdn.cn/OpfJ7
.............................................