Deep Network Designer
网络模型设计器
在实现了几个针对gym的基础场景的强化学习模型后,我们想要在atari的游戏中试试身手,借助Deep Network Designer,可以方便地设计、修改、观察深度学习神经网络模型。
比Simulink更方便的是参数填写就在右边、不需要双击打开模块就可以直接修改参数。
左边的是所有支持的网络结构,鼠标拖拽到中央模型区域即可,接下来就是和simulink一样的连线了,鼠标靠近的时候会出现圆形连接点、按住鼠标拖拽到下一个就可以了。
我们首先要用到的是图像输入层,输入层都是蓝色方块,拖拽一个imageInputLayer到中间来,因为我们要研究的是atari游戏画面,灰度图甚至是二值图就足够了、所以需要修改的是inputSize,atari原始画面大概要160*160,我们也不需要这么大、可以在Env对象中缩小一下、只需要50*50或者更小一些就可以。
接下来是卷积层,就是图里面的黄色方块,卷积层的功能是对输入数据进行特征提取。一样的拖拽到中间来、在右边填写参数。
全连接层,是每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来。由于其全相连的特性,一般全连接层的参数也是最多的。
激活函数都是红色的方块,还有灰色的方块是辅助功能。我们在接下来针对atari的pong游戏进行训练,用的就是这些模块。
搭建完网络模型后点击export就可以生成代码、在后续训练中使用
criticNetwork = layerGraph();
tempLayers = [
imageInputLayer([40 40 1],"Name","gameVedio","Normalization","none")
convolution2dLayer([10 10],2,"Name","conv","Padding","same","Stride",[5 5])
reluLayer("Name","relu_1")
fullyConnectedLayer(400,"Name","fc_1")
reluLayer("Name","relu_2")
fullyConnectedLayer(300,"Name","fc_3")];
criticNetwork = addLayers(criticNetwork,tempLayers);
tempLayers = [
imageInputLayer([1 1 1],"Name","action","Normalization","none")
fullyConnectedLayer(300,"Name","fc_2")];
criticNetwork = addLayers(criticNetwork,tempLayers);
tempLayers = [
additionLayer(2,"Name","addition")
reluLayer("Name","relu_3")
fullyConnectedLayer(1,"Name","fc_4")];
criticNetwork = addLayers(criticNetwork,tempLayers);
% 清理辅助变量
clear tempLayers;
criticNetwork = connectLayers(criticNetwork,"fc_2","addition/in2");
criticNetwork = connectLayers(criticNetwork,"fc_3","addition/in1");
figure
plot(criticNetwork)
预知后事如何
且听下回分解