王者荣耀AI绝悟完全体对战开启,英雄竟能随便选
人工智能 2 级就来越塔来杀我,这游戏怎么玩?
从双向估计,到一步预测中间帧。视频插帧,通常是用光流预测算法来预测中间帧,并插入两帧之间。光流,就像光的流动一样,是一种通过颜色来表示图像中目标移动方向的方式。
深度学习框架在编程界面上,一般有两种编程模式:命令式编程和声明式编程,即动态图和静态图。动态图模式下程序可即时执行并输出结果,编程体验和调试便捷性更佳;静态图模式下需完成整体网络结构的定义再执行,编程调试便捷性不够,但能够对全局编译优化,更有利于性能的提升,并天然利于模型保存和部署。
飞桨同时支持这两种编程模式,经过长期的深入技术探索和创新,已经实现同时兼顾两种方式的优势,达成了更有利于开发者的“动静统一的理想国”:
-
模型开发时,采用动态图模式,编程效率高调试方便; -
模型训练部署时,支持动态图一键式自动转静态图,实现高性能训练,并无缝衔接模型存储和部署。
在飞桨开源框架最新版本上,该模式已经达到很高的成熟完备度。开发者既可体验到动态图开发模式带来的极大的便利性,用动态图实现深度学习领域最前沿的模型算法;又可享受到经过极致优化的运行效率,并且可以很容易的将动态图转换为静态图来进行推理和部署。
成熟的动态图模式,可以为开发者带来极致体验,更优雅地编程。总结一下,便利性主要体现在以下三方面:
-
调试程序的便利性。在动态图开发模式下,用户运行飞桨提供的API后,可即时返回运行结果,不需要先创建计算图再运行,这样便于用户更加方便地组织代码,交互式地调试程序。 -
组建网络的高效性。在动态图开发模式下,用户可以使用Python的条件判断、循环等控制语句来执行模型算法的运算,不再需要使用静态图中的控制操作来执行运算,这样便于用户更加高效地组建网络。 -
构建模型的灵活性。在动态图开发模式下,用户可以根据控制流选择不同的分支网络,也可以更自然地构建权重共享的网络,更自然地实现自定义损失函数和循环网络、以及其他新颖的网络结构,从而灵活地进行深度学习模型的创新。
同时,在最新版本上,飞桨动态图提供了对计算机视觉、自然语言处理、推荐系统、语音识别等领域主流算法模型的全面支持,同时也对前沿的学术研究提供了非常好的支持。已开放的动态图模型数量达到了100+。这些模型都已开源在GitHub上,开发者可基于动态图模型进行AI应用开发和前沿学术研究:
https://github.com/PaddlePaddle/models/tree/develop/dygraph
一行代码实现动转静。
from paddle.static import InputSpec
from paddle.fluid.dygraph import Layer
from paddle.jit import to_static
class SimpleNet(Layer):
def __init__(self):
super(SimpleNet, self).__init__()
self.linear = paddle.nn.Linear(10, 3)
@to_static(input_spec=[InputSpec(shape=[None, 10], name=’x’), InputSpec(shape=[3], name=’y’)])
def forward(self, x, y):
out = self.linear(x)
out = out + y
return out
net = SimpleNet()
paddle.jit.save(net, ‘./simple_net’)
