我试图在TensorFlow中创建一个简单的神经网络.唯一棘手的部分是我有一个我实现的自定义操作py_func.当我将输出传递py_func给Dense图层时,TensorFlow会抱怨应该知道等级.具体错误是:
ValueError: Inputs to `Dense` should have known rank.
Run Code Online (Sandbox Code Playgroud)
当我通过它时,我不知道如何保留我的数据的形状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())
Run Code Online (Sandbox Code Playgroud)
此代码段的输出是:
(5,)
[0 1 2 3 4]
<unknown>
[ 0.
1.17520118 3.62686038 10.01787472 27.28991699]
Run Code Online (Sandbox Code Playgroud)
为什么y.shape <unknown>?我希望形状与之(5,)相同inp.谢谢!
Yar*_*tov 39
既然py_func可以执行任意Python代码并输出任何东西,TensorFlow无法弄清楚形状(它需要分析函数体的Python代码)你可以改为手动赋予形状
y.set_shape(inp.get_shape())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5222 次 |
| 最近记录: |