绘制神经网络的工具
Tool for drawing neural networks
我正在尝试寻找一种工具来复制以下神经网络图:
可以使用igraph
轻松绘制节点和边。但是,我不确定 igraph
是否可以用来复制图中的其他部分。你能帮帮我吗?
如果您正在寻找类似此示例的解决方案:
您可以在这里找到它: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)
我认为 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
}")
我不知道如何制作 'vertical arrow to arrows',但我想我们可以通过标签来制作...
我正在尝试寻找一种工具来复制以下神经网络图:
可以使用igraph
轻松绘制节点和边。但是,我不确定 igraph
是否可以用来复制图中的其他部分。你能帮帮我吗?
如果您正在寻找类似此示例的解决方案: 您可以在这里找到它: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)
我认为 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
}")
我不知道如何制作 'vertical arrow to arrows',但我想我们可以通过标签来制作...