我有一个包含4列的CSV文件。 3个输入和1个输出。已经标准化了。我可以使用nnet和neuralnet来训练一个有3个输入的网络,3个隐藏层,每个3个节点和一个输出。它有效。
我想对MXNET做同样的事情,但在进行回归时,必须隐藏“FullyConected”的参数= 1。任何其他值只会抛出错误消息。
如何将网络构建为标题或此图像中的网络?
这是代码:
csvIn <- read.csv("normalized.csv")
require(mxnet)
inputData <- csvIn[,1:3]
outputData <- csvIn[,4]
lcinm <- data.matrix(inputData, rownames.force = "NA")
lcoutm <- data.matrix(outputData, rownames.force = "NA")
lcouta <- as.numeric(lcoutm)
data <- mx.symbol.Variable("data")
fc1 <- mx.symbol.FullyConnected(data, name="fc1", num_hidden=3)
act1 <- mx.symbol.Activation(fc1, name="sigm1", act_type="sigmoid")
fc2 <- mx.symbol.FullyConnected(act1, name="fc2", num_hidden=3)
act2 <- mx.symbol.Activation(fc2, name="sigm2", act_type="sigmoid")
fc3 <- mx.symbol.FullyConnected(act2, name="fc3", num_hidden=3)
softmax <- mx.symbol.LinearRegressionOutput(fc3, name="softmax")
mx.set.seed(0)
mxn <- mx.model.FeedForward.create(array.layout = "rowmajor", softmax, X = lcinm, y = lcouta, learning.rate=0.07, eval.metric=mx.metric.rmse)
这是错误消息:
Start training with 1 devices
[08:54:33] C:/Users/qkou/mxnet/dmlc-core/include/dmlc/logging.h:235: [08:54:33] src/ndarray/ndarray.cc:231: Check failed: from.shape() == to->shape() operands shape mismatch
Error in exec$update.arg.arrays(arg.arrays, match.name, skip.null) :
[08:54:33] src/ndarray/ndarray.cc:231: Check failed: from.shape() == to->shape() operands shape mismatch
输入数据(3个节点)
> lcinm
INA INV INC
[1,] 0.327172792 0.1842063931 0.50227366
[2,] 0.328585645 0.1911366252 0.50394467
[3,] 0.329998499 0.1980668574 0.50557458
[4,] 0.333367019 0.1994041603 0.50606766
[5,] 0.338691205 0.2007416800 0.50656075
[6,] 0.344015391 0.2020789830 0.50705383
[7,] 0.345432095 0.2021049795 0.50698534
[8,] 0.346848798 0.2021309760 0.50691686
[9,] 0.348355970 0.2026784188 0.50617724
[10,] 0.349953611 0.2032256450 0.50542391
输出数据(1个节点)
> lcouta
[1] 0.6334235 0.6336314 0.6338394 0.6339434 0.6339434 0.6339434
[7] 0.6306156 0.6272879 0.6241681 0.6212562 0.6183444 0.6170965
答案 0 :(得分:0)
对于FullyConnected API,num_hidden是此图层的隐藏单位数。要在一个网络中定义多个隐藏层,您可以执行以下操作:
>>> import mxnet as mx
>>> net = mx.symbol.Variable('data')
>>> net = mx.symbol.FullyConnected(data=net, name='fc1', num_hidden=128)
>>> net = mx.symbol.Activation(data=net, name='relu1', act_type="relu")
>>> net = mx.symbol.FullyConnected(data=net, name='fc2', num_hidden=64)
>>> net = mx.symbol.Activation(data=net, name='relu2', act_type="relu")
>>> net = mx.symbol.FullyConnected(data=net, name='fc3', num_hidden=32)
>>> net = mx.symbol.SoftmaxOutput(data=net, name='out')
这是用python编写的。你应该能够在R中做类似的事情。
答案 1 :(得分:0)
尝试以下方法:
<html>
...
<body>
...
<table id="table-user">
<thead>...</thead>
<tbody>
AJAX DINAMYC CONTENT
</tbody>
</table>
....
<script>
$(document).on('click','.btn-edit',function(){
go_edit();
});
$('#table-user').on('click','.btn-edit',function(){
go_edit();
});
</script>
</body>
</html>
这里fc4实际上是整个网络的输出。我们使用LinearRegressionOutput作为最终输出,使网络能够优化平方损失。您也可以直接使用fc4作为输出并编写自己的损失函数。