【发布时间】:2017-03-04 00:02:10
【问题描述】:
我正在尝试在 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())
这个 sn-p 的输出是:
(5,)
[0 1 2 3 4]
<unknown>
[ 0.
1.17520118 3.62686038 10.01787472 27.28991699]
为什么是y.shape <unknown>?我希望形状为(5,) 与inp 相同。谢谢!
【问题讨论】:
-
@gkcn 也许,我已经有一段时间没有问了,但我发现了作者自己回答的那个问题。我记得他的解决方案对我不起作用,这就是我写问题的原因。
标签: tensorflow