Объединенный ввод с постоянным вектором в кератах. как определить размер пакета - PullRequest
0 голосов
/ 09 мая 2018

Как ответ на этот вопрос:

Объединенный ввод с постоянным вектором в кератах

Я пытаюсь использовать предложенное решение:

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 Ответ

0 голосов
/ 09 мая 2018

Чтобы получить динамический размер партии:

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)
...