我正在尝试使用TensorFlow创建一个简单的神经网络。唯一棘手的部分是我用py_func
实现了一个自定义操作。当我将py_func
的输出传递给Dense
层时,TensorFlow会抱怨需要知道等级。具体错误如下:
ValueError: Inputs to `Dense` should have known rank.
我不知道如何在通过 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>
?我希望形状与 inp
相同为 (5,)
。谢谢!