У меня есть тензор, который имеет форму (50, 100, 1, 512)
и я хочу изменить его или удалить третье измерение, чтобы новый тензор имел форму (50, 100, 512)
.
Я попытался tf.slice
с tf.squeeze
:
a = tf.slice(a, [50, 100, 1, 512], [50, 100, 1, 512])
b = tf.squeeze(a)
Кажется, все работает, когда я пытался напечатать форму a
и b
но когда я начал тренировать свою модель, эта ошибка появилась
tensorflow.python.framework.errors_impl.InvalidArgumentError: Expected size[0] in [0, 0], but got 50
[[Node: Slice = Slice[Index=DT_INT32, T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](MaxPool_2, Slice/begin, Slice/size)]]
Есть ли проблемы с моим slice
. Как я могу это исправить. Спасибо
Обычно tf.squeeze
размеры.
a = tf.constant([[[1,2,3],[3,4,5]]])
Вышеуказанная тензорная форма равна [1,2,3]
. После выполнения операции сжатия,
b = tf.squeeze(a)
Теперь форма тензора [2,3]
Существует несколько способов сделать это. Tensorflow начал поддерживать индексирование. Пытаться
a = a[:,:,0,:]
ИЛИ ЖЕ
a = a[:,:,-1,:]
ИЛИ ЖЕ
a = tf.reshape(a,[50,100,512])
В этом случае я неправильно использую tf.slice
, он должен выглядеть следующим образом:
a = tf.slice(a, [0, 0, 0, 0], [50, 100, 1, 512])
b = tf.squeeze(a)
Вы можете узнать, почему, посмотрев документацию tf.slice
slice
? Простое использование squeeze
должно сделать эту работу.
squeeze
только удалить тусклый с размером = 1