Я пытаюсь создать простую нейронную сеть в TensorFlow. Единственная сложность в том, что у меня есть пользовательская операция, которую я реализовал с помощью py_func
. Когда я py_func
вывод из py_func
в Dense
слой, TensorFlow жалуется, что ранг должен быть известен. Конкретная ошибка:
ValueError: Inputs to 'Dense' should have known rank.
Я не знаю, как сохранить форму моих данных, когда я py_func
их через py_func
. Мой вопрос: как мне получить правильную форму? У меня есть простой пример ниже, чтобы проиллюстрировать проблему.
def my_func(x):
return np.sinh(x).astype('float32')
inp = tf.convert_to_tensor(np.arange(5))
y = tf.py_func(my_func, [inp], tf.float32, False)
with tf.Session() as sess:
with sess.as_default():
print(inp.shape)
print(inp.eval())
print(y.shape)
print(y.eval())
Выход из этого фрагмента:
(5,)
[0 1 2 3 4]
<unknown>
[ 0.
1.17520118 3.62686038 10.01787472 27.28991699]
Почему y.shape
<unknown>
? Я хочу, чтобы форма (5,)
такой же, как inp
. Спасибо!