Как использовать функцию плитки в Keras? - PullRequest
0 голосов
/ 11 ноября 2018

Я хочу построить нейронную сеть с Keras, но я получил ошибку: AttributeError: 'NoneType' object has no attribute '_inbound_nodes', и это мой пример кода:

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)

1 Ответ

0 голосов
/ 11 ноября 2018

Эта ошибка возникает из-за того, что keras.backend.tile является функцией, а не слоем, что делает tiled_emb тензорным. Затем генерируется ошибка при попытке построения сети и обнаружении только тензора, где он ожидает слой (поэтому attr _inbound_nodes не определен).

Вы можете превратить любую функцию в слой, используя слой keras.layers.lambda , например:

tiled_emb = Lambda(keras.backend.tile, arguments={'n':(-1, 64, 64, 1)})(text_emb)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...