这是一个非常基本的张量流问题,但我还没有在文档中看到一个明确的解释。在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个维度?你知道吗
当输入和输出中都有一个滤波器(=通道)时,您将得到一个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)内核。你知道吗
相关问题 更多 >
编程相关推荐