最大池tensorflow中的单个图像使用“tf.nn.avg\u池"

2024-05-16 16:14:45 发布

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

我想申请”tf.nn.max\u池()“在单个图像上,但我得到的结果的维数与输入值完全不同:

import tensorflow as tf
import numpy as np

ifmaps_1 = tf.Variable(tf.random_uniform( shape=[ 7, 7, 3], minval=0, maxval=3, dtype=tf.int32))

ifmaps=tf.dtypes.cast(ifmaps_1, dtype=tf.float64)

ofmaps_tf = tf.nn.max_pool([ifmaps], ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], padding="SAME")[0] # no padding

init = tf.initialize_all_variables()
with tf.Session() as sess:
    sess.run(init)
    print("ifmaps_tf = ")
    print(ifmaps.eval())
    print("ofmaps_tf = ")
    result = sess.run(ofmaps_tf)
    print(result)

我认为这与尝试将池应用于单个示例(而不是批处理)有关。我需要用一个例子来说明这个问题。你知道吗

感谢您的帮助。你知道吗


Tags: run图像importinittfasnnresult
1条回答
网友
1楼 · 发布于 2024-05-16 16:14:45

您的输入是(7,7,3),内核大小是(3,3),跨步是(2,2)。因此,如果不需要任何填充(在注释中说明),应该使用padding="VALID",这将返回(3,3)张量作为输出。如果使用padding="SAME",它将返回(4,4)张量。你知道吗

通常,计算同一焊盘输出尺寸的公式为:

out_size = ceil(in_sizei/stride)

有效pad为:

out_size = ceil(in_size-filter_size+1/stride)

相关问题 更多 >