全连接神经网络 -3

本文介绍了如何在全连接神经网络中获取并可视化中间隐藏层的输出。通过在前向传播过程中直接返回隐藏层变量或使用钩子技术,可以实现这一目标。文章展示了在已训练好的网络上应用这两种方法,对隐藏层输出进行降维和散点图可视化,以理解网络的计算过程。
摘要由CSDN通过智能技术生成

获取中间层的输出可视化
在全连接神经网络训练好后,为了更好地理解全连接神经网络的计算过程,以获取网络在计算过程中中间隐藏层的输出,可以使用两种方法:

  1. 如果在网络的前向过程想要输出隐藏层,可以使用独特的变量进行命名,然后再输出时输出该变量,例如:
def forward(self,x):
	fc1 = self.hidden1(x)
	fc2 = self.hidden2(fc1)
	output = self.classifica(fc2)
	## 输出为两个隐藏层和输出层的输出
	return fc1,fc2,output

在上面的forward()函数中,fc1和fc2分别是第一隐藏层和第二隐藏层的输出,ouput则为分类层的输出,最后使用return fc1, fc2, output同时将三个变量输出,便于在调用模型时,轻松获得隐藏层的输出。

  1. 如果在网络的前向过程只输出了最后一层的输出,并没有输出中间变量,这时想要获取中间层的输出,则使用钩子(hook)技术。钩子技术可以理解为对一个完整的业务流程,使用钩子可以在不修改原始网络代码的情况下,将额外的功能依附于业务流程,并获取想要的输出。

接下来针对上述已经训练好的网络,分别利用两种方法介绍如何从网络中获取中间隐藏层的输出,并对相关输出进行可视化。

  1. 使用中间层的输出
    在上述定义的全连接网络类中,已经输出了隐藏层的输出,可以直接使用mlpc()作用于测试集时,输出相关内容,程序如下:
## 计算最终模型在测试集上的第二个隐藏层的输出
_,test_fc2,_=mlpc(X_test_t)
print("test_fc2.shape:",test_fc2.shape)

在上述程序和输出中,可以通过获取mlpc网络,让测试集在第二个隐藏层输出test_fc2。test_fc2的尺寸为[1151,10],表明有1151个样本,每个样本包含10个特征输出。
下面对10个特征进行降维,然后使用散点图进行可视化,程序如下:

## 对输出进行降维并可视化
test_fc2_tsne=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值