#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 не поддерживает это наивно.