Tensorboard特征图可视化

本文介绍了如何在Tensorboard中进行特征图可视化,特别是在孪生卷积神经网络中验证参数共享。由于原始特征图通道数较大,通过自定义的tf.concat方法将其reshape为单通道,以便于Tensorboard显示。文中提供了代码示例,并提到可通过选择部分特征图来调整可视化大小。

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

前言

实现孪生卷积神经网络时,验证是否共享了参数,进行了特征图可视化。由于卷积层特征图通道都很大,需要进行重新reshape成Tensorboard可以显示的通道数(1或3或4),这里全部变成了单通道的特征图。没有使用tf.reshape()是因为发现有问题,所以还是自己重新利用tf.concat进行reshape。

效果

这里写图片描述

这里写图片描述

代码提示

主要是最后两个函数,一个添加Tensorboard,一个对特征图进行reshape,很简单的思路。如果嫌特征图太小了,可以选择每次选一半的特征图进行reshape。见代码注释!

代码

# coding=utf-8

"""孪生卷积神经网络"""

import tensorflow as tf
import numpy as np
import math


class SiameseNet(object):

    def __init__(self):
        print("正在构建孪生网络...")
        self.opts = {
  'trainWeightDecay': 0.0, 'stddev': 0.01}

    def build_siamese_cnn_network(self, input):
        first_image = tf.expand_dims(input[:, :, :, 0], 3)
        second_image = tf.expand_dims(input[:, :, :, 1], 3)

        with tf.variable_scope('siamese_CNN') as scope:
            first_output = self._build_branch(first_image, True)
            scope.reuse_variables()
            second_output = self._build_branch(second_image, False)

        return first_output, second_output

    def _build_branch(self, image, branch):
        print("构建孪生网络分支...")

        with tf.variable_scope('conv_block1_1'):
            print("构建conv1,relu1...")
            name = tf.get_variable_scope().name
            outputs = self._conv(image, 64, 3, 1, self.opts['trainWeightDecay'], self.opts['stddev'])
            o
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值