gpt4 book ai didi

python-2.7 - 在 theano 卷积 MLP 中可视化每一层的输出

转载 作者:行者123 更新时间:2023-12-04 18:35:51 25 4
gpt4 key购买 nike

我正在阅读 Convolutional Neural Networks tutorial .我想在模型训练后可视化每一层的输出。例如,在函数“evaluate_lenet5”中,我想将一个实例(即图像)传递给网络,并查看每一层的输出以及为输入设置训练神经网络的类。我认为在图像和每一层的权重向量上做点积可能很容易,但它根本不起作用。

我有每一层的对象:

# Reshape matrix of rasterized images of shape (batch_size, 28 * 28)
# to a 4D tensor, compatible with our LeNetConvPoolLayer
# (28, 28) is the size of MNIST images.
layer0_input = x.reshape((batch_size, 1, 28, 28))

# Construct the first convolutional pooling layer:
# filtering reduces the image size to (28-5+1 , 28-5+1) = (24, 24)
# maxpooling reduces this further to (24/2, 24/2) = (12, 12)
# 4D output tensor is thus of shape (batch_size, nkerns[0], 12, 12)
layer0 = LeNetConvPoolLayer(
rng,
input=layer0_input,
image_shape=(batch_size, 1, 28, 28),
filter_shape=(nkerns[0], 1, 5, 5),
poolsize=(2, 2)
)

# Construct the second convolutional pooling layer
# filtering reduces the image size to (12-5+1, 12-5+1) = (8, 8)
# maxpooling reduces this further to (8/2, 8/2) = (4, 4)
# 4D output tensor is thus of shape (batch_size, nkerns[1], 4, 4)
layer1 = LeNetConvPoolLayer(
rng,
input=layer0.output,
image_shape=(batch_size, nkerns[0], 12, 12),
filter_shape=(nkerns[1], nkerns[0], 5, 5),
poolsize=(2, 2)
)

# the HiddenLayer being fully-connected, it operates on 2D matrices of
# shape (batch_size, num_pixels) (i.e matrix of rasterized images).
# This will generate a matrix of shape (batch_size, nkerns[1] * 4 * 4),
# or (500, 50 * 4 * 4) = (500, 800) with the default values.
layer2_input = layer1.output.flatten(2)

# construct a fully-connected sigmoidal layer
layer2 = HiddenLayer(
rng,
input=layer2_input,
n_in=nkerns[1] * 4 * 4,
n_out=500,
activation=T.tanh
)

# classify the values of the fully-connected sigmoidal layer
layer3 = LogisticRegression(input=layer2.output, n_in=500, n_out=10)

那么,您能否提出一种在训练神经网络后逐步可视化处理图像的样本的方法?

最佳答案

这并不难。
如果您使用 的相同类定义LeNetConvPoolLayer 来自 theano 深度学习教程,那么您只需要使用 x 编译一个函数作为输入和[LayerObject].output作为输出(其中 LayerObject 可以是任何图层对象,如 layer0、layer1 等。无论您想要可视化哪个图层。

vis_layer1 = function([x], [layer1.output])



传递一个(或多个)样本(正是你在训练时输入张量的方式),你将获得编译函数所针对的特定层的输出。

注意:通过这种方式,您将获得与模型在计算中使用的形状完全相同的输出。但是,您可以通过 reshape 输出变量(如 layer1.output.flatten(n))来根据需要 reshape 它。 .

关于python-2.7 - 在 theano 卷积 MLP 中可视化每一层的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35093588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com