Я пробую модель с несколькими входами, но получаю ошибку.Вот мой код:
### 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)