导入神经网络模型
要创建用于强化学习的函数逼近器,您可以使用深度学习工具箱™网络导入功能导入预先训练的深度神经网络或深度神经网络层架构。你可以导入:
开放神经网络交换(ONNX™)模型,需要ONNX模型格式的深度学习工具箱转换器支持包软件。有关更多信息,
importONNXLayers
.TensorFlow™-Keras网络,它需要张量流模型的深度学习工具箱转换器支持包软件。有关更多信息,请参见
importKerasLayers
.Caffe卷积网络,它需要Caffe模型的深度学习工具箱导入器支持包软件。有关更多信息,请参见
importCaffeLayers
.
导入深度神经网络后,可以创建参与者或批评者对象,例如rlQValueFunction
或rlDiscreteCategoricalActor
.
当您导入深度神经网络体系结构时,请考虑以下几点。
导入的网络体系结构输入和输出层的维度必须与环境中相应的操作、观察或奖励维度的维度相匹配。
导入网络架构后,需要将输入层和输出层的名称设置为与对应的动作和观察规范名称相匹配。
有关强化学习支持的深度神经网络体系结构的更多信息,请参见创建政策和价值功能.
图像观测应用中导入Actor和批评家
例如,假设您有一个具有50 × 50灰度图像观测信号和连续动作空间的环境。要训练策略梯度代理,您需要以下函数逼近器,它们都必须具有单个50 × 50的图像输入观察层和单个标量输出值。
演员—根据当前观察结果选择操作值
评论家-根据目前的观察估计预期的长期回报
此外,假设您有以下网络架构要导入:
演员的深度神经网络体系结构,具有50 × 50的图像输入层和标量输出层,保存为ONNX格式(
criticNetwork.onnx
).评论家的深度神经网络架构,具有50 × 50的图像输入层和标量输出层,以ONNX格式保存(
actorNetwork.onnx
).
要导入评论家和演员网络,请使用importONNXLayers
函数,而不指定输出层。
criticNetwork = importONNXLayers (“criticNetwork.onnx”);actorNetwork = importONNXLayers (“actorNetwork.onnx”);
这些命令生成一个警告,声明在添加输出层之前网络是可训练的。当您使用导入的网络创建演员或评论家时,“强化学习工具箱”软件会自动为您添加输出层。
在导入网络之后,创建actor和批评家函数逼近器。要做到这一点,首先要从环境中获取观察和操作规范。
obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);
创建批评家,指定批评家网络的输入层的名称作为观察名称。由于批评家网络有一个单一的观察输入和一个单一的动作输出,所以使用一个值函数。
评论家= rlValueFunction (criticNetwork obsInfo,...“ObservationInputNames”, {criticNetwork.Layers (1) . name});
创建参与者,指定参与者网络的输入层名称作为观察名称,参与者网络的输出层名称作为观察名称。由于actor网络只有单个标量输出,所以使用连续的确定性actor。
演员= rlContinuousDeterministicActor (actorNetwork obsInfo actInfo,...“ObservationInputNames”, {actorNetwork.Layers (1) . name});
然后,您可以: