如何在R中复制/克隆RSNNS网络?

时间:2016-02-08 20:59:17

标签: r neural-network

我想创建我的网络实例的多个副本来预测多重独立波。不幸的是,简单的重新分配在这种情况下不起作用,所以我该怎么办?

我附上了一个可重复的演示,该演示显示两个副本的预测结果应该完全相同,但它们不是:

library(RSNNS)
points = sin(seq(1,20,0.1))
input = head(points,-1)
output = tail(points,-1)
net = elman(input, output, maxit=1000)
netCopy1 = net
netCopy2 = net
print(predict(netCopy1, as.matrix(input[1:10])))
print(predict(netCopy2, as.matrix(input[1:10])))

1 个答案:

答案 0 :(得分:0)

RSNNS模型是C ++对象,这就是为什么只复制R指针不起作用的原因。为了深度复制这样的模型,RSNNS具有对象序列化机制。最简单的方法是将模型保存到磁盘并加载它,例如如下:

library(RSNNS)

set.seed(10)

points = sin(seq(1,20,0.1))
input = head(points,-1)
output = tail(points,-1)
net = elman(input, output, maxit=1000)
netCopy1 = net

saveRDS(net, file="./net.RData")
netCopy2 = readRDS("./net.RData")

print(predict(netCopy1, as.matrix(input[1:10])))
print(predict(netCopy2, as.matrix(input[1:10])))