mxnet-多层前向网络


#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Fri Aug 10 16:13:29 2018

@author: myhaspl
"""
from mxnet import nd
from mxnet.gluon import nn

class MixMLP(nn.Block):
    def __init__(self, **kwargs):
        # Run `nn.Block`'s init method
        super(MixMLP, self).__init__(**kwargs)
        self.blk = nn.Sequential()
        self.blk.add(nn.Dense(6, activation='relu'),nn.Dense(4, activation='relu'))
        self.dense = nn.Dense(3)
    def forward(self, x):
        y = nd.relu(self.blk(x))
        print(y)
        return self.dense(y)
net = MixMLP()
print net
net.initialize()
x = nd.random.uniform(shape=(5,2))
z=net(x)
print net.blk[0].weight.data()
print net.blk[1].weight.data()
print z
1、网络层次:

MixMLP(
  (dense): Dense(None -> 3, linear)
  (blk): Sequential(
    (0): Dense(None -> 6, Activation(relu))
    (1): Dense(None -> 4, Activation(relu))
  )
)

2、第二层输出的y

[[0.0020287  0.         0.00173523 0.00095254]
 [0.00282071 0.         0.00248448 0.00107639]
 [0.00274506 0.         0.00262306 0.00067603]
 [0.00266313 0.         0.0026484  0.00052397]
 [0.00198146 0.         0.0019231  0.00045017]]
<NDArray 5x4 @cpu(0)>

3、第一层权值:

[[ 0.02042518 -0.01618656]
 [-0.00873779 -0.02834515]
 [ 0.05484822 -0.06206018]
 [ 0.06491279 -0.03182812]
 [-0.01631819 -0.00312688]
 [ 0.0408415   0.04370362]]
<NDArray 6x2 @cpu(0)>

第二层权值:

[[ 0.00404529 -0.0028032   0.00952624 -0.01501013  0.05958354  0.04705103]
 [-0.06005495 -0.02276454 -0.0578019   0.02074406 -0.06716943 -0.01844618]
 [ 0.04656678  0.06400172  0.03894195 -0.05035089  0.0518017   0.05181222]
 [ 0.06700657 -0.00369488  0.0418822   0.0421275  -0.00539289  0.00286685]]
<NDArray 4x6 @cpu(0)>

通过网络最终输出结果:

[[ 1.6364756e-05 -4.1916697e-05  7.9047706e-05]
 [ 1.1254386e-05 -6.3164698e-05  1.2381122e-04]
 [-1.1489021e-05 -7.3660660e-05  1.4161502e-04]
 [-2.0757943e-05 -7.7326593e-05  1.4498169e-04]
 [-1.1048716e-05 -5.4851542e-05  1.0439851e-04]]
<NDArray 5x3 @cpu(0)>

猜你喜欢

转载自blog.51cto.com/13959448/2317111
今日推荐