Объединенный ввод с постоянным вектором в кератах. как определить размер пакета
В продолжение этого вопроса:
Объединенный ввод с постоянным вектором в кератах
Я пытаюсь использовать предложенное решение:
constant=K.variable(np.ones((1,10, 5)))
constant = K.repeat_elements(constant,rep=batch_size,axis=0)
И получил следующую ошибку:
NameError: name 'batch_size' is not defined
Я не понимаю, как определить в модели keras batch_size [не явно], чтобы можно было объединить символический слой и постоянный слой, чтобы использовать их в качестве входного слоя.
1 ответ
Решение
Чтобы получить динамический размер партии:
batch_size = K.shape(your_tensor)[0]
Но K.repeat_elements()
не принимает Tensor
значения для rep
, Однако вы можете получить тот же результат, используя K.tile()
:
from keras.models import *
from keras import backend as K
import numpy as np
a = Input(shape=(10, 5))
batch_size = K.shape(a)[0]
constant = K.variable(np.ones((1,10, 5)))
constant = K.tile(constant, (batch_size, 1, 1))
print(constant)
# Tensor("Tile:0", shape=(?, 10, 5), dtype=float32)