如果Keras&TF中的shape方法为batch_size返回None,如何获取batch_size?

时间:2019-04-29 06:07:20

标签: tensorflow keras deep-learning

我将函数包装为一层。在此功能中,我需要知道输入的形状是什么。形状的第一个索引是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。我希望它的形状等于输入形状。但这会导致大量跟踪错误。如果我将其替换为固定形状,则可以使用。我将错误追溯到该死的无物。

1 个答案:

答案 0 :(得分:2)

您可以使用int_shape来创建tf.zeros_like而不是使用z

z= tf.zeros_like(c, dtype='complex64')