Ошибка Keras - «мы ожидаем, что тензоры будут иметь статический размер пакета» - PullRequest
3 голосов
/ 26 апреля 2019

Я пробую модель с несколькими входами, но получаю ошибку.Вот мой код:

### Features
toks_pad = pad_sequences(toks_feat, maxlen=maxlen, dtype  = 'object', value= None)
pos_pad  = pad_sequences(pos_feat,  maxlen=maxlen, dtype  = 'object', value= None)
print(f"toks_pad shape:{toks_pad.shape} | pos_pad shape {pos_pad.shape}")

toks_pad shape: (143, 15) |форма pos_pad (143, 15)

toks_pad[0]

массив ([Нет, Нет, Нет, Нет, Нет, Нет, Нет, Нет, Нет, Нет, нет, 'потеря слуха', 'из',' причины ',' are ',' impaction ',' presbyacusis '], dtype = object)

print(f"ntoks:{ntoks} | npos:{npos} | ndep:{ndep} | nrel:{nrel} | maxlen:{maxlen}")
toks_inp   = Input(shape=(maxlen,), dtype='string', name='toks')
toks_emb   = layers.Embedding(input_dim = ntoks, output_dim = 32, input_length= maxlen)(toks_inp) ## for small testing data use GLOVE
toks_enc   = layers.LSTM(32)(toks_emb)

pos_inp    = Input(shape=(maxlen,), dtype='string', name='pos')
pos_emb    = layers.Embedding(input_dim = npos, output_dim = 32, input_length= maxlen)(pos_inp)   ## for small testing data use GLOVE
pos_enc    = layers.LSTM(32)(pos_emb)

ntoks: 440 |npos: 43 |ndep: 43 |nrel: 22 |maxlen: 15

### Model
concat     = layers.concatenate([toks_enc, pos_enc], axis=-1)
answers    = layers.Dense(nrel,activation='softmax')(concat)
model      = Model([toks_inp, pos_inp], answers)
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['acc'])

model.fit({'toks': toks_pad, 'pos': pos_pad}, answers, epochs=5, batch_size=10)

ValueError: При подаче символьных тензоров в модель мы ожидаем, что тензоры будут иметь статический размер пакета.Получил тензор с формой: (Нет, 22)

...