Моя задача - разработать глубокую нейронную сеть для распознавания текста. Чтобы распознать 5 языков, я представляю данные следующим образом:
letters_count = 32*5
word_max_letters = 14
tokenizer = Tokenizer(num_words=letters_count, char_level=True, lower=True)
tokenizer.fit_on_texts(train_data['word'])
sequences = tokenizer.texts_to_sequences(train_data['word'])
x_train = pad_sequences(sequences, maxlen=word_max_letters, padding='post')
standard_scaler = StandardScaler().fit(x_train)
x_train = standard_scaler.transform(x_train)
y_train = train_data['lang']
y_train = to_categorical(y_train)
Проблема в том, что для такой простой задачи я не могу go превысить 90% + точность. Хотя это довольно большой процент по сравнению с базовой c точностью (20%), обычно такие задачи достигают 97% + точность
Мне кажется, что смысл в представлении данных, потому что какая сеть Я бы не стал строить, я не добился лучшего результата. Я пытался увеличить размер выборки и сбалансировал количество слов по языкам, но это не помогло
Есть ли варианты улучшить модель? Возможно, мне следует использовать несколько входных данных и рассматривать как весь текст, так и слова отдельно?
Кстати, лучшая модель, которую я использовал:
X = Dense(2048, activation='relu', kernel_initializer='glorot_uniform')(input)
X = Dense(1024, activation='relu', kernel_initializer='glorot_uniform')(X)
X = Dense(512, activation='relu', kernel_initializer='glorot_uniform')(X)
X = Dense(512, activation='relu', kernel_initializer='glorot_uniform')(X)
X = Dense(5, activation='softmax', kernel_initializer='glorot_uniform')(X)
model_optimizer = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
Заранее спасибо