Итак, в настоящее время у меня есть этот код, который заменяет тензор BxNxNxC
на тензор BxNxNx(C+P)
, где B - размер пакета, C - количество каналов, а P - количество каналов заполнения, которые я хочу add:
A = <some BxNxNxC tensor>
P = <some calculation>
padding_tensor = keras.layers.UpSampling3D(size=[1, 1, P])(tf.zeros_like(A)[:, :, :, 0:1])
# This is the BxNxNx(C+P) tensor
concat = keras.layers.Concatenate(axis=3)([A, padding_tensor])
Причина, по которой я делаю это по кругу, заключается в том, что я не могу напрямую создать padding_tensor
правильного размера, потому что кажется невозможным получить размер пакета для определения формы.
Мне нужен чистый способ сделать это, потому что я смотрю на графики вычислений моих моделей, и это добавляет много раздувания. Если можно как бы скрыть все эти операции в одном вычислительном узле, я был бы достаточно доволен этим, но предпочел бы не использовать 3 операции для чего-то столь же простого, как заполнение.
Я также подозреваю, что это будет немного медленным, но я недостаточно знаю о тензорном потоке, чтобы действительно знать.