Как получить batch_size, если метод shape в Keras & TF возвращает None для batch_size? - PullRequest
2 голосов
/ 29 апреля 2019

Я обертываю функцию как слой. В этой функции мне нужно знать, какова форма ввода. Первый индекс формы - batch_size, мне нужно это знать! Проблема в том, что K.int_shape возвращает что-то вроде (None, 2, 10). Но это (Ничего) не должно быть известно во время выполнения, верно? это все еще Нет и вызывает ошибку.

По сути, в моей функции я хочу создать константу, равную размеру batch_size.

Вот моя функция для того, что стоит

def func(inputs):
    max_iter=3
    x, y= inputs
    c= tf.complex(x, y)
    print(K.int_shape(c))
    z= tf.zeros(shape=K.int_shape(c), dtype='complex64')
    #b=K.switch(K.greater( tf.abs(c) , 4), K.constant(1, shape=(1,1)), K.constant(0, shape=(1,1)))
    for i in range(max_iter):
        c= c * c + z
    return c
layer= Lambda(func)

Вы можете видеть, где я создал константу z. Я хочу, чтобы его форма была равна форме ввода. Но это вызывает ошибку с массивным следом. Если я заменю это на фиксированную форму, это сработает. Я проследил ошибку до этого проклятого Ничего.

1 Ответ

2 голосов
/ 29 апреля 2019

Вместо использования int_shape вы можете использовать tf.zeros_like для создания z

z= tf.zeros_like(c, dtype='complex64')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...