Как передать скалярные входные данные в модель tf.keras?

#tensorflow #keras

#tensorflow #keras

Вопрос:

Я хочу иметь скалярный ввод для моей модели keras, но не смог найти хороший способ сделать это.

Я могу указать такой ввод: a = tf.keras.Input(shape=(), name="a") . Однако keras автоматически добавляет пакетное измерение в a , см. Пример ниже:

 a = tf.keras.Input(shape=(), name="a")
print(a.shape)  # the output is (None,)
 

Я просто хочу a быть скаляром (т.Е. Иметь форму () вместо (None,) ). Как я могу это сделать?

Обновить

Я нашел обходной путь:

 a = tf.keras.Input(shape=(), name="a")
a_scalar = tf.squeeze(a, axis=0)
print(a_scalar.shape)  # the output is ()
 

Но это просто слишком уродливо и глупо.

Комментарии:

1. Модель Keras будет принимать пакеты данных, и, следовательно, требуется форма ввода ( None , 1 ) . Здесь None может быть заменен размером пакета, необходимым для обучения. Вы можете передавать batch_size=1 во время вызова model.fit() . Таким образом, тензор формы ( 1 , 1 ) будет передан модели, содержащей одно число.

2. Если вам не нужен пакетный размер, я предлагаю вам пропустить keras и напрямую использовать низкоуровневый API TensorFlow.

3. Я думаю, что передача скаляра, не содержащего формы, не является чем-то необычным, просто удивлен, что keras не поддерживает это наивно.