我将函数包装为一层。在此功能中,我需要知道输入的形状是什么。形状的第一个索引是batch_size,我需要知道!问题是K.int_shape返回类似(None,2,10)的内容。但是,这件事(无)应该在运行时知道,对吧?它仍然是None并导致错误。
基本上,在我的函数中,我想创建一个与batch_size一样长的常量。
这是我的职责所在
def func(inputs):
max_iter=3
x, y= inputs
c= tf.complex(x, y)
print(K.int_shape(c))
z= tf.zeros(shape=K.int_shape(c), dtype='complex64')
#b=K.switch(K.greater( tf.abs(c) , 4), K.constant(1, shape=(1,1)), K.constant(0, shape=(1,1)))
for i in range(max_iter):
c= c * c + z
return c
layer= Lambda(func)
您可以看到我在哪里创建了常数z。我希望它的形状等于输入形状。但这会导致大量跟踪错误。如果我将其替换为固定形状,则可以使用。我将错误追溯到该死的无物。
答案 0 :(得分:2)
您可以使用int_shape
来创建tf.zeros_like
而不是使用z
z= tf.zeros_like(c, dtype='complex64')