Указывает ли заголовок edb количество страниц в базе данных edb?

Итак, насколько я понял, у вас есть последовательность максимум 50 событий, на которые вы хотите сделать прогнозы. Эти события имеют прикрепленные текстовые данные, которые можно рассматривать как другую последовательность вложений слов.

Я бы предложил решение, которое включает в себя LSTM для текстовой части 1D-свертку для «реальной» части последовательности. Каждый слой LSTM объединяется с числовыми данными. Это включает в себя 50 слоев LSTM, которые могут потребовать много времени для обучения, даже если вы используете общие веса. Также возможно использовать только слои свертки для текстовой части, которая выполняется быстрее, но не моделирует долгосрочные зависимости. (У меня есть опыт, что эти долгосрочные зависимости часто не так важны для интеллектуального анализа текста).

Текст -> LSTM или 1DConv -> concat с числовыми данными -> 1DConv -> Выходные данные Вот какой код exmaple, который показывает, как использовать весы осколков

numeric_input = Input(shape=(x_numeric_train.values.shape[1],), name='numeric_input')
nlp_seq = Input(shape=(number_of_messages ,seq_length,), name='nlp_input'+str(i))

# shared layers
emb = TimeDistributed(Embedding(input_dim=num_features, output_dim=embedding_size,
                input_length=seq_length, mask_zero=True,
                input_shape=(seq_length, )))(nlp_seq)    
x = TimeDistributed(Bidirectional(LSTM(32, dropout=0.3, recurrent_dropout=0.3, kernel_regularizer=regularizers.l2(0.01))))(emb)      

c1 = Conv1D(filter_size, kernel1, padding='valid', activation='relu', strides=1, kernel_regularizer=regularizers.l2(kernel_reg))(x)
p1 = GlobalMaxPooling1D()(c1)
c2 = Conv1D(filter_size, kernel2, padding='valid', activation='relu', strides=1, kernel_regularizer=regularizers.l2(kernel_reg))(x)
p2 = GlobalMaxPooling1D()(c2)
c3 = Conv1D(filter_size, kernel3, padding='valid', activation='relu', strides=1, kernel_regularizer=regularizers.l2(kernel_reg))(x)
p3 = GlobalMaxPooling1D()(c3)

x = concatenate([p1, p2, p3, numeric_input])    
x = Dense(1, activation='sigmoid')(x)        
model = Model(inputs=[nlp_seq, meta_input] , outputs=[x])
model.compile('adam', 'binary_crossentropy', metrics=['accuracy'])    

И training:

model.fit([x_train, x_numeric_train], y_train)
# where x_train is a a array of num_samples * num_messages * seq_length

Для такой сложной модели требуется много данных для сближения. Для меньшего количества данных более простое решение может быть реализовано путем агрегирования событий, чтобы иметь только одну последовательность. Например, текстовые данные всех событий можно рассматривать как один единственный текст (с маркером разделителя) вместо нескольких текстов, в то время как числовые данные могут быть суммированы, усреднены или даже объединены в список фиксированной длины. Но это зависит от ваших данных.

Поскольку я работаю над чем-то подобным, я обновлю этот ответ с кодом позже.

0
задан dmwpepper 18 January 2019 в 21:20
поделиться

1 ответ

Я не совсем уверен, почему он нужен в заголовке, но есть API JetGetDatabaseFileInfo, если вы не подключили базу данных: https://docs.microsoft.com/ ru-us / windows / desktop / extensible-storage-engine / jetgetdatabasefileinfo-function

Существует также JetGetDatabaseInfo, если вы уже подключили его. Вас интересует размер файла? Или количество страниц, которое движок считает (JET_DbInfoSpaceOwned)?

0
ответ дан Martin Chisholm 18 January 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: