Проблема с определением слоя встраивания в C ++ (mlpack lib) - PullRequest
0 голосов
/ 29 мая 2020

Столкнулся со следующей проблемой. Я хочу построить модель LSTM для анализа настроений. В C ++ я использую библиотеку mlpack. Во-первых, чтобы понять архитектуру, я подошел к проблеме через python, а Керас посоветовал из некоторых руководств. В этом учебнике был этот код:

from keras.models import Sequential
from keras.layers import Dense, Embedding, LSTM, GRU
from keras.layers.embeddings import Embedding

EMBEDDING_DIM = 100

print('Build model...')

model = Sequential()
model.add(Embedding(vocab_size, EMBEDDING_DIM, input_length=max_length())
model.add(GRU(units=32, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

В моем коде на C ++ я написал этот блок:

model.Add<IdentityLayer<> >();
model.Add<Embedding<> >(vocabSize, embedSize);
model.Add<LSTM<> >(inputSize, lstmCells, maxRho);
model.Add<Dropout<> >(0.5);
model.Add<ReLULayer<> >();
model.Add<Linear<> >(lstmCells, outputSize);

Консоль вывода выдает мне эту ошибку :

error: conv_to(): given object can't be interpreted as a vector
terminate called after throwing an instance of 'std::logic_error'
what():  conv_to(): given object can't be interpreted as a vector

Не могу понять где ошибка после нескольких часов отладки ... Спасибо

...