在R编程中,我试图了解如何使用nnet来为用户指定初始权重而不是默认值来运行神经网络算法? R文档提到了以下论点。有关如何使用权重的任何示例吗?
nnet(formula, data, weights, ...,
subset, na.action, contrasts = NULL)
答案 0 :(得分:1)
查看文档http://cran.r-project.org/web/packages/nnet/nnet.pdf
默认S3方法:
nnet(x, y, weights, size, Wts, mask,
linout = FALSE, entropy = FALSE, softmax = FALSE,
censored = FALSE, skip = FALSE, rang = .7, decay = ,
maxit = 1 , Hess = FALSE, trace = TRUE, MaxNWts = 1 ,
abstol = 1. e-4, reltol = 1. e-8, ...)
Wts :初始参数向量。如果遗失是随机选择的。
因此,您必须根据您的网络拓扑定义自己的Wts并且它应该可以正常工作
答案 1 :(得分:1)
自定义权重应具有以下形式:
weights <- c(
BH1, I1H1, I2H1, .., InH1,
BH2, I1H2, I2H2, .., InH2,
...
BHn, I1Hn, I2Hn, .., InHn,
BO,
I1Out, .., InOut)
即
c(
weights from bias & inputs to 1st hidden unit,
from bias & inputs to second hidden unit H2,
from bias & inputs to last hidden unit Hn,
biast of output unit,
skip layer weights ( if any)
)
此致
P.S。 切记将连接到单位的所有重量的标准偏差保持在1.0以下。 否则你会很快让单位饱和。