【发布时间】:2017-11-18 14:42:15
【问题描述】:
我正在使用 tensorflow 中的神经网络,我有一个名为 CNN_model 的函数,该函数将三个占位符作为输入:
X = tf.placeholder(tf.float32, [1, None, 13])
Y = tf.placeholder(tf.int32, [None])
和
pool_shape = tf.placeholder(tf.int32, [1])
我使用以下值运行会话:
feed_dict={X: x, Y: y, MFCCS: x.shape[0]}
在会话中,我想做一个最大池化层,其形状由占位符定义,如下所示:
pool_window_size = [pool_shape, pool_shape]
pool = tf.layers.max_pooling2d(
inputs = conv,
pool_size = pool_window_size,
strides = pool_window_size,
name = "pool"
)
但我得到了错误:
TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“张量”
我的假设是因为此时“pool_shape”是一个张量而不仅仅是一个整数,有没有办法获得当时张量中的任何值?
【问题讨论】:
-
如果我可以问,你为什么要改变池内核的大小?你能想出一种不做就完成任务的方法吗?
-
我想使用动态池化,因为我有可变大小的输入示例,所以我希望池化层根据示例的形状生成固定大小的输出。我一直在使用零填充使所有示例都具有相同的形状,但我担心这会影响准确性。
标签: python tensorflow