Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.0k views
in Technique[技术] by (71.8m points)

tensorflow - How to use tile function in Keras?

I want to build a neural network with Keras,but I got a error: AttributeError: 'NoneType' object has no attribute '_inbound_nodes',and this is my example code:

from keras.layers.merge import concatenate

img = Input(shape=(64,64,3))
text_input = Input(shape=(192,))
text_emb = Reshape(target_shape=(1, 1, 256))(Dense(256, activation='relu')(text_input))
tiled_emb = keras.backend.tile(text_emb, (-1, 64, 64, 1))
img_feat = Conv2D(400,4,padding='same')(img)
con = concatenate([tiled_emb,img_feat])
conv4 = Conv2D(512, 1)(con)

flat = Flatten()(conv4)
validity = Dense(1, activation='sigmoid')(flat)

Model([img, text_input], validity)
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This error occurs because keras.backend.tile is a function and not a layer, making tiled_emb a tensor. The error is then generated when trying to construct the network and encountering just a tensor where it expects a layer (so the attr _inbound_nodes is not defined).

You can turn any function into a layer by using the keras.layers.lambda layer, eg:

tiled_emb = Lambda(keras.backend.tile, arguments={'n':(-1, 64, 64, 1)})(text_emb)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...