获取smbol的内部节点(获取部分网络结构)

本文详细介绍了如何使用MXNet构建神经网络,包括全连接层、激活函数的定义,并展示了如何将网络序列化为JSON文件,以及如何从JSON文件中加载网络并获取其内部节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先定义一个网络

data = mx.sym.Variable('data')
fc1 = mx.sym.FullyConnected(data=data, name='fc1', num_hidden=1000)
act = mx.sym.Activation(data=fc1, act_type='relu',name='act')
fc2 = mx.sym.FullyConnected(data=act, name='fc2', num_hidden=10)
net = mx.sym.SoftmaxOutput(fc2,name="softmax")
net.save('model.symbol.json')

将该网络通过save序列化保存为json文件。 # mx.sym.Symbol 类型自带save函数

载入json,获取内部节点

net = mx.sym.load('model.symbol.json')
net.get_internals  #  获取所有内部节点,将其group起来
<Symbol group [data, fc1_weight, fc1_bias, fc1, act, fc2_weight, fc2_bias, fc2, softmax_label, softmax]>
net.get_internals().list_outputs()  #  获取所有内部节点的输出
['data',
 'fc1_weight',
 'fc1_bias',
 'fc1_output',
 'act_output',
 'fc2_weight',
 'fc2_bias',
 'fc2_output',
 'softmax_label',
 'softmax_output']
new_net = net.get_internals()['act_output'] #  通过key value方式,获取网络的内部节点数据,后续可以接着对new_net进行操作,构建新的网络

对于var,其list_outputs()list_inputs()都是他自己,对于其他op,比如+,-,relu等,其输出要在该op的name后面加上_output后缀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值