Mathematica绘制神经网络图

  • A+
所属分类:Mathematica绘图
摘要现在我们经常会用到神经网络,同时我们经常会需要画出网络的结构图,但是使用visio画这种结构图又不是很方便,于是这篇文章给出了使用mathematica来绘制简单的网络图,只需要输入每一层节点个数就能画出网络图。

最近在学习神经网络的时候,需要画一些网络结构图,但是感觉使用visio画太麻烦了,于是想使用Mathematica来画出网络拓扑图。于是在我寻找之下,找到了下面的方法来画图。参考链接见文末。

(这一次我不想讲这个方法具体是如何实现的了,我们就讲一下如何使用就可以了,下次直接使用就可以了,我也是自己记录一下)

画神经网络图函数

f = Module[{index = {1, 1 + First@#}}, 
    AdjacencyGraph@
     SparseArray[
      Band[# &[index, index += #]] -> ConstantArray[1, #] & /@ 
       Partition[#, 2, 1], {1, 1} Total@#]] &;

我们看一下具体的使用(这里的{1,2,3,4,5}表示第一层有1个节点,第二层有两个节点,第三层有三个节点,第四层有四个节点,第五层有五个节点)

f[{1, 2, 3, 4, 5}]

于是画出了下面的图像

但是我们觉得这个图像还是不好看,下面我们来进行进一步的美化:

SetProperty[
   f[#], {VertexLabels -> Placed["Name", Center], 
    GraphLayout -> {"MultipartiteEmbedding", "VertexPartition" -> #}, 
    VertexSize -> Large, VertexLabelStyle -> 14}] &@{5, 10, 10, 1}

通过设置一些属性,我们就可以画出下面的图(代码中的{5,10,10,1}表示第一层有5个节点,第二层有10个节点,第三层有10个节点,第四层有1个节点):

到这一步,我们就差不多可以画出我们想要的神经网络的结构图了。

参考资料

上面方法来源:https://mathematica.stackexchange.com/questions/135354/function-to-draw-densely-interconnected-layers-in-graph-e-g-neural-net

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: