【问题标题】:keras merge AttributeError: 'Merge' object has no attribute 'is_placeholder'keras merge AttributeError:“合并”对象没有属性“is_placeholder”
【发布时间】:2017-06-29 03:15:34
【问题描述】:

我一直试图让一些开源代码运行,但可以摆脱这个错误。

mnist = input_data.read_data_sets('../../MNIST_data', one_hot=True)
X_train = mnist.train.images
y_train = mnist.train.labels

X = Input(batch_shape=(m, n_x))
cond = Input(batch_shape=(m, n_y))
merged = merge([X, cond], mode='concat', concat_axis=1)
inputs = merged  # I tried sub X instead of merged, then it works

...................
# middle layer code derives outputs, which is irrelevant to this error

vae = Model(inputs, outputs)

重要的是最后一行抱怨没有属性。

  File "cvae_keras.py", line 74, in <module>
    vae = Model(inputs, outputs)
  File "/Users/bruceho/anaconda/lib/python2.7/site-packages/keras/legacy/interfaces.py", line 88, in wrapper
    return func(*args, **kwargs)
  File "/Users/bruceho/anaconda/lib/python2.7/site-packages/keras/engine/topology.py", line 1566, in __init__
    if layer.is_placeholder:
AttributeError: 'Merge' object has no attribute 'is_placeholder'

但是 merge 和 X 都是 tensorflow.python.framework.ops.Tensor 类型,如果我将 merge 作为输入换出,然后用 X 换出,则不会出现此类错误。

为什么语句不接受 Tensor 对象的合并版本?

【问题讨论】:

    标签: tensorflow keras tensor


    【解决方案1】:

    创建模型时不需要合并输入。

    mnist = input_data.read_data_sets('../../MNIST_data', one_hot=True)
    X_train = mnist.train.images
    y_train = mnist.train.labels
    
    X = Input(batch_shape=(m, n_x))
    cond = Input(batch_shape=(m, n_y))
    
    ...................
    # do whatever you want to create outputs from X and cond
    
    vae = Model(inputs = [X, cond], outputs=outputs)
    

    the Keras Model document查看更多信息

    【讨论】:

    • 谢谢。我只是把输入和输入数据弄混了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2016-04-21
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多