简体   繁体   中英

Shapes must be equal rank

I'd like to do transfer learning from a pre-trained model. I'm following the guide for retrain from Tensorflow.

However, I'm stuck in an error tensorflow.python.framework.errors_impl.InvalidArgumentError: Shapes must be equal rank, but are 3 and 2 for 'input_1/BottleneckInputPlaceholder' (op: 'PlaceholderWithDefault') with input shapes: [1,?,128].

# Last layer of pre-trained model 
# `[<tf.Tensor 'embeddings:0' shape=(?, 128) dtype=float32>]`

with tf.name_scope('input'):
    bottleneck_input = tf.placeholder_with_default(
        bottleneck_tensor,
        shape=[None, 128],
        name='BottleneckInputPlaceholder')

Any ideas?

This is happening because your bottleneck_tensor is of shape [1, ?, 128] and you are explicitly stating that the shape should be [?, 128] . You can use tf.squeeze to reduce convert your tensor in the required shape as

tf.squeeze(bottleneck_tensor)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM