我正在尝试复制古德费罗,I.等人:生成性对抗性网中给出的示例
伪码在第4页给出为“算法1”。我正试图用R中的神经网络软件包重建它:
library(neuralnet)
train_iter <- 10
steps <- 1
m <- 100
# initialize D and G
z <- sort(runif(m))
x <- sort(rnorm(m))
data <- cbind(z, x)
D <- neuralnet( , data = data, hidden = 11) # unclear how to define formula
G <- neuralnet(x ~ z, data = data, hidden = 11)
for (i in 1:train_iter) {
for (k in 1:steps) {
z <- sort(runif(m))
x <- sort(rnorm(m))
data <- cbind(z, x)
err_fct_d <- function(x, z) {
-log(compute(D, x)$net.result + log(1 - compute(D, compute(G, z)$net.result)$net.result))
}
D <- neuralnet( , data = data, hidden = 11, err.fct = err_fct_d, startweights = D$weights) # unclear how to define formula
}
z <- sort(runif(m))
data <- cbind(z, x)
err_fct_g <- function(x, z) {
log(1 - compute(D, compute(G, z)$net.result)$net.result)
}
G <- neuralnet(x ~ z, data = data, hidden = 11, err.fct = err_fct_g, startweights = G$weights)
}我的问题
我的第一个问题是,是否有可能以上述方式使用带有这些自定义错误函数的神经网络包。
我的第二个问题涉及鉴别器网络:我不知道如何训练它,即如何定义神经网络功能的公式部分。
发布于 2017-01-28 17:03:42
不幸的是,这是不可能的,因为err.fct必须是一个可分析的可微函数,而compute函数阻止了这一点。
编辑:我联系了这个包的作者,他写道:
我检查了你的GAN例子,我认为用神经网络是不可能的,因为错误函数的处理方式不够灵活。..。
https://stackoverflow.com/questions/41783117
复制相似问题