【发布时间】:2017-11-28 16:05:26
【问题描述】:
我已经训练了一个 2 层卷积神经网络层 CNN 来对 64 通道 EEG 数据集进行分类。该模型具有良好的训练、验证和测试精度。现在我想查看模型为每个通道(特征)学习的权重,我设法将过滤器权重导出并保存为 numpy 数组。 当我读取并显示我的过滤器权重时,每个过滤器内部都有两个数组,一个有 10 个值,另一个有 11 个值。我在第 1 层有 32 个过滤器,在第 2 层有 64 个过滤器。所有过滤器都是这样的。
(数组([2, 3, 1, 2, 8, 2, 2, 1, 1, 3]), 数组([-0.17596437, -0.14086468, -0.10576499, -0.0706653, -0.03556561, -0.00046591、0.03463378、0.06973347、0.10483316、0.13993285、 0.17503254]))
我无法解释与我的 64 个通道相关的这一点,因为我有兴趣知道每个通道学习的权重。我的减肥方法正确吗?,如果正确,我如何与 64 个功能匹配?,因为我有同一个过滤器的第一个数组中有 10 个值,第二个数组中有 11 个值。
我的第一个和第二个卷积层是这样的
#weight and bias the first convolution layer
W_conv1 = weight_variable([5, 5, 1, 32])
b_conv1 = bias_variable([32])
#first convolution and pooling
h_conv1 = tf.nn.relu(conv2d(x_iput, W_conv1) + b_conv1)
h_pool1 = max_pool_2x2(h_conv1)
#weight and bias of the second convolution layer
W_conv2 = weight_variable([5, 5, 32, 64])
b_conv2 = bias_variable([64])
#second convolution and pooling
h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)
h_pool2 = max_pool_2x2(h_conv2)
训练我的模型后,这就是我保存卷积层 1 权重的方法
with tf.variable_scope('conv1', reuse=True) as scope_conv:
Conv1_weights = W_conv1.eval()
with open("conv1.weights.npz", "wb") as outfile:
np.save(outfile, Conv1_weights)
为了保存权重,我关注了来自here的问题
【问题讨论】:
标签: python numpy tensorflow conv-neural-network