title: Tensorflow maxpool with dynamic ksize
body: <p>I have the following code for a convolutional layer on TensorFlow. This layer is part of a larger computational graph.</p>
  
  <pre><code># Define the shape of the filter
  filter_shape = [1,
                  config.char_filter_size,
                  config.dim_char,
                  config.dim_char]
  
  # Define the convolutional layer weights and biases
  W_conv = tf.Variable(tf.truncated_normal(filter_shape, stddev=0.1),
                       name="W_conv")
  b_conv = tf.Variable(tf.constant(0.1, shape=[config.dim_char]),
                       name="b_conv")
  # Do 2d convolution
  conv = tf.nn.conv2d(char_embeddings,
                      W_conv,
                      strides=[1, 1, 1, 1],
                      padding="VALID",
                      name="conv")
  # Apply nonlinearity
  # h_conv has the same shape as conv
  h_conv = tf.nn.relu(tf.nn.bias_add(conv, b_conv),
                      name="conv_relu")
  # Maxpooling h_conv over dim 2 (char dim)
  
  # ERROR HERE
  conv_pooled = tf.nn.max_pool(h_conv,
                               ksize=[1, 1, tf.shape(h_conv)[-2], 1],
                               strides=[1, 1, 1, 1],
                               padding='VALID',
                               name="conv_max_pool")
  </code></pre>
  
  <p>When trying to run, I get the error:</p>
  
  <blockquote>
    <p>TypeError: Expected int for argument 'ksize' not tf.Tensor shape=() dtype=int32.</p>
  </blockquote>
  
  <p>is <code>tf.nn.max_pool</code> unable to handle dynamic <code>ksize</code>?</p>