TensorFlow`py_func`的输出具有未知的等级/形状
tensorflow
5
0

我正在尝试在TensorFlow中创建一个简单的神经网络。唯一棘手的部分是我有一个使用py_func实现的自定义操作。当我将输出从py_funcDense层时,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,)相同。谢谢!

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

由于py_func可以执行任意Python代码并输出任何内容,因此TensorFlow无法弄清楚形状(这需要分析函数体的Python代码),您可以手动指定形状

y.set_shape(inp.get_shape())
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号