软件框架
动态图与静态图的区别
静态图:
- 需要先构建好计算图,然后再往计算图传入数据
- 计算图构建好后不需要源代码也可以运行,编译好模型后可以存储到本地
- 静态图可以把卷积层和激活层合并,增加运算速度
动态图:
每一次迭代都要重新更新一个新的计算图
每一次运行都需要依赖源代码
动态图对于每一次更新结果都不一样的网络来说非常好用,方便记录所有生成的信息。(循环神经网络、递归神经网络、模块化网络)。也就是说,针对不同的问题使用的计算图也不一样
循环神经网络:每一层只接受来自上一层的输出
递归神经网络:每一层可以接受上一层的输出,也可以接受本层的输出
ONNX
ONNX 是一种通用的模型规范,可以实现模型在不同框架之间的切换使用。
框架使用注意事项
- TF 适合拿来做研究和生产(谷歌生态 + 硬件支持),但是它的代码更新太快,文档跟不上,同时也会遇到许多坑,不建议新手刚开始就学
- PyTorch 适合研究,复现论文
- 对于初学者而言,先学 python / keras,不要轻易碰 TF