绘制神经网络的工具

Posted

技术标签:

【中文标题】绘制神经网络的工具【英文标题】:Tool for drawing neural networks 【发布时间】:2022-01-20 14:03:45 【问题描述】:

我正在尝试寻找一种工具来复制以下神经网络图:

使用igraph 可以轻松绘制节点和边。但是,我不确定igraph 是否可以用来复制图中的其他部分。你能帮帮我吗?

【问题讨论】:

您有兴趣专门在 R 中执行此操作,对吗?看起来您可以非常接近基本 R 的 textarrows 函数,但需要大量了解各种元素的位置。 谢谢,@Dubukay,是的,我想在 R 中或使用其中一个 R 包来绘制神经网络。使用igraph(R 包)很容易绘制节点和边缘。所以,我觉得只用纯R,太复杂了。 【参考方案1】:

我认为DiagrammeR 可以是一个更好的变体。

如果你想把它制作成 R 环境。但是你需要一些时间来学习这个包。

library(DiagrammeR)

grViz("digraph G1 
  graph [layout=neato overlap = true]     
  I0 [pos='1,3.25!' shape=plaintext label='input layer' fontsize=20]
  I1 [pos='1,2.5!'  style=radial]  
  I2 [pos='1,1!'    style=radial]
  I3 [pos='1,-0.5!' style=radial]
  I7 [pos='0,2.5!'  shape=plaintext label='input 1']
  I8 [pos='0,1!'    shape=plaintext label='input 2']
  I9 [pos='0,-0.5!' shape=plaintext label='input 3']
  H0 [pos='3,3.25!' shape=plaintext label='hidden layer 1' fontsize=20]
  H1 [pos='3,2.5!' style=radial]     
  H2 [pos='3,1!'    style=radial]
  H3 [pos='3,-0.5!' style=radial]
  O0 [pos='5,3.25!' shape=plaintext label='output layer' fontsize=20]
  O1 [pos='5,0!'  style=radial]
  O2 [pos='5,2!'  style=radial] 
  O7 [pos='6,0!' shape=plaintext label='output']
  O8 [pos='6,2!' shape=plaintext label='output']
  
  I7 -> I1 
  I8 -> I2
  I9 -> I3
  I1 -> H1 [label='w=0.8']
  I1 -> H2 H3
  I2 -> H1 H2 H3
  I3 -> H1 H2 H3
  H1 H2 H3 -> O1
  H1 H2 H3 -> O2
  O1 -> O7
  O2 -> O8
  
")

我不知道如何制作“垂直箭头到箭头”,但我认为我们可以通过标签来实现...

【讨论】:

感谢@manro,再次感谢您的帮助!我相信通过使用虚构的节点,可以画出缺少的 thetas 和垂直箭头。 @PaulSmith 没问题 :) 看答案 N2 (***.com/questions/50268757/…),我们可以从“无处”中提取。如果您知道如何从 void 制作垂直箭头,我会很高兴看到它;) 是的,@manro,可以从 void 中绘制一个垂直箭头:只需将这两行添加到您的代码中:O3 [pos='5,1!' shape=plaintext label='']O3 -> O1【参考方案2】:

如果您正在寻找像此示例这样的解决方案: 你可以在这里找到它:https://hub.packtpub.com/training-and-visualizing-a-neural-network-with-r/

#install.packages("neuralnet")

library(neuralnet)
data(iris)
ind <- sample(2, nrow(iris), replace = TRUE, prob=c(0.7, 0.3))
trainset = iris[ind == 1,] 
testset = iris[ind == 2,]

trainset$setosa = trainset$Species == "setosa"
trainset$virginica = trainset$Species == "virginica"
trainset$versicolor = trainset$Species == "versicolor"

network = neuralnet(versicolor + virginica + setosa~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, trainset, hidden=3)
network
neuralnet(formula = versicolor + virginica + setosa ~ Sepal.Length +     Sepal.Width + Petal.Length + Petal.Width, data = trainset,     hidden = 3)
network$result.matrix
head(network$generalized.weights[[1]])

plot(network)

【讨论】:

谢谢,@TarJae。上图是关于已经估计的神经网络,我要找的是尚未估计的神经网络图。 好的。试试这个 diagrams.net> 它是免费的。还有一部分是网络。 谢谢@TarJae!

以上是关于绘制神经网络的工具的主要内容,如果未能解决你的问题,请参考以下文章

绘制动画网络图的工具是什么

深度学习网络结构图绘制工具及方法

深度学习网络结构图绘制工具及方法

深度学习网络结构图绘制工具及方法

Caffe---自带工具 绘制loss和accuracy曲线

社会关系网络网怎么绘制