张量流是如何连接相连卷积层的维度的?

2024-06-17 14:58:48 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个非常基本的张量流问题,但我还没有在文档中看到一个明确的解释。在examples on the tensorflow site之后,我们基本上将这两个层连接起来:

conv1 = tf.layers.conv2d(
    inputs=input_layer,
    filters=32,
    kernel_size=[5, 5],
    padding="same",
    activation=tf.nn.relu)

此时的形状将是(28, 28, 32)。你知道吗

conv2 = tf.layers.conv2d(
    inputs=conv1,
    filters=64,
    kernel_size=[5, 5],
    padding="same",
    activation=tf.nn.relu)

此时的形状将是(28, 28, 64)。tensorflow如何使用2d内核将(28, 28, 32)转换为(28, 28, 64)。你能给我解释一下文件吗?比如说,第二层的输出维数越小,情况如何

conv2 = tf.layers.conv2d(
    inputs=conv1,
    filters=8,
    kernel_size=[5, 5],
    padding="same",
    activation=tf.nn.relu)

tensorflow如何将32个维度组合成8个维度?你知道吗


Tags: sizelayerstftensorflownnactivationkernelfilters
1条回答
网友
1楼 · 发布于 2024-06-17 14:58:48

当输入和输出中都有一个滤波器(=通道)时,您将得到一个5x5卷积核,用于计算像素(x,y)的输出,方法是取核和输入的Hadamard(元素)积[x-2:x+3,y-2:y+3]然后取得到的5x5矩阵的和,最后应用激活函数^{}在您的例子中。)因为这些坐标中的一些指向输入之外,所以^{}开始起作用,为了这个计算,零被用作外部位置的虚拟元素。您的网络将学习内核中的权重。你知道吗

现在假设输入中有2个过滤器,输出中有1个。然后有两个内核,输出将是应用于每个输入通道的上述两个独立操作的结果的总和。你知道吗

如果输入中有1个过滤器,输出中有2个过滤器,那么同样,您有两个内核,每个像素的两个输出通道将使用相应的内核分别生成。你知道吗

现在是大跳跃:如果输入中有k滤波器,输出中有n滤波器,那么就有(k*n)不同的内核需要学习,输出中每个像素的每个n通道将被计算为k的总和在每个输入通道上分开卷积。网络将学习所有(k*n)内核。你知道吗

相关问题 更多 >