Невозможно импортировать имя 'Merge' из 'keras.layers' - PullRequest
0 голосов
/ 26 мая 2019

Я попытался запустить код, но обнаружил проблему со слоями слияния Keras. Я использую Python 3 и keras 2.2.4

Это кодовая часть кода


import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import LSTM, Embedding, TimeDistributed, Dense, RepeatVector, Merge, Activation
from keras.preprocessing import image, sequence
import cPickle as pickle


    def create_model(self, ret_model = False):

        image_model = Sequential()
        image_model.add(Dense(EMBEDDING_DIM, input_dim = 4096, activation='relu'))
        image_model.add(RepeatVector(self.max_length))

        lang_model = Sequential()
        lang_model.add(Embedding(self.vocab_size, 256, input_length=self.max_length))
        lang_model.add(LSTM(256,return_sequences=True))
        lang_model.add(TimeDistributed(Dense(EMBEDDING_DIM)))

        model = Sequential()
        model.add(Merge([image_model, lang_model], mode='concat'))
        model.add(LSTM(1000,return_sequences=False))
        model.add(Dense(self.vocab_size))
        model.add(Activation('softmax'))

        print ("Model created!")

Это сообщение об ошибке

from keras.layers import LSTM, Embedding, TimeDistributed, Dense, RepeatVector, Merge, Activation
ImportError: cannot import name 'Merge' from 'keras.layers'

1 Ответ

0 голосов
/ 26 мая 2019

Merge не поддерживается в Keras +2.Вместо этого вам нужно использовать Concatenate layer:

merged = Concatenate()([x1, x2])

или его эквивалентный функциональный интерфейс concatenate (начиная со строчной буквы c):

merged = concatenate([x1,x2])

Если вы заинтересованыв других формах слияния, например, сложение, вычитание и т. д., вы можете использовать соответствующие слои.См. документацию для полного списка слоев слияния.

...