2017-02-21 14 views
1

Поскольку tf.max_pool dosen't поддерживает переменный размер, уровень spp не работает. Я передаю длину на график, получил ошибку.Как построить spp-net в Tensorflow?

length = tf.placeholder(tf.int32) 
shape=[-1, length,length,32] 
pool = tf.nn.max_pool(output, 
        ksize=[1, np.ceil(shape[1] * 1./l).astype(np.int32), np.ceil(shape[2] * 1./l).astype(np.int32), 1], 
        strides=[1, np.floor(shape[1] * 1./l + 1).astype(np.int32), np.floor(shape[2] * 1./l + 1), 1], 
          padding='SAME') 

ТипError: Ожидается, что int32 получил 1.0 типа 'float' вместо этого.

У вас есть идея, как с этим бороться?

ответ

1

В параметре strides измените третье значение на целое. т.е.

np.floor(shape[2] * 1./l + 1) в np.floor(shape[2] * 1./l + 1).astype(np.int32)

Полного stride варианта:

strides=[1, np.floor(shape[1] * 1./l + 1).astype(np.int32), 
      np.floor(shape[2] * 1./l + 1).astype(np.int32), 1], 

Надеется, что это помогает вам.

+0

благодарит за ответ. то, что вы выясняете, является проблемой. , но истинное повышение ошибки в точке: Файл «F: /MyProgram/Python/DL/SppNet.py», строка 343, в SgdSppNet ksize = [1, np.ceil (shape [1] * 1./l) .astype (np.int32), Длина - это tf.tensor, а не константа. Но поддерживающая переменная tf.nn.max_pool dosen't используется как ksize или strides. – kingwen

 Смежные вопросы

  • Нет связанных вопросов^_^