Размер шрифта
-
+

Нейросети начало - стр. 5

audio = tf.squeeze(audio, axis=-1)

audio = tf.cast(audio, tf.float32)

# Разбивка на фрагменты

frame_length = 640

frame_step = 320

audio_length = tf.shape(audio)[0]

num_frames = tf.cast(tf.math.ceil(audio_length / frame_step), tf.int32)

padding_length = num_frames * frame_step – audio_length

audio = tf.pad(audio, [[0, padding_length]])

audio = tf.reshape(audio, [num_frames, frame_length])

# Извлечение признаков MFCC

mfccs = tf.signal.mfccs_from_log_mel_spectrograms(

tf.math.log(tf.abs(tf.signal.stft(audio))),

audio.shape[-1],

num_mel_bins=13,

dct_coefficient_count=13,

)

# Подготовка данных для обучения

labels = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "zero"]

label_to_index = dict(zip(labels, range(len(labels))))

index_to_label = dict(zip(range(len(labels)), labels))

text = "one two three four five six seven eight nine zero"

target = tf.keras.preprocessing.text.one_hot(text, len(labels))

X_train = mfccs[None, …]

y_train = target[None, …]

# Обучение модели

history = model.fit(X_train, y_train, epochs=10)

# Предсказание результатов

predicted_probs = model.predict(X_train)

predicted_indexes = tf.argmax(predicted_probs, axis=-1)[0]

predicted_labels = [index_to_label[i] for i in predicted_indexes]

# Вывод результатов

print("Predicted labels:", predicted_labels)


Этот код реализует автоматическое распознавание речи с помощью нейросети на основе TensorFlow и Keras. Первым шагом определяется архитектура нейросети с помощью Keras Sequential API. В данном случае используется рекуррентный слой LSTM, принимающий на вход последовательность участков звука длиной 13. Затем идут несколько полносвязных слоев с функцией активации relu и один выходной слой с функцией активации softmax, выдающий вероятности для каждого класса речи.

Далее модель компилируется с помощью метода compile. Оптимизатором выбран Adam с коэффициентом обучения 0.001, функцией потерь – категориальная кросс-энтропия, а в качестве метрики используется точность классификации.

Затем загружается звуковой файл в формате wav, который декодируется с помощью tf.audio.decode_wav и преобразуется в числовые значения float32. Далее происходит разбиение файла на фрагменты длиной 640 с шагом 320. Если файл не делится на равные фрагменты, то добавляется заполнение.

Далее происходит извлечение признаков MFCC (Mel-frequency cepstral coefficients) из каждого фрагмента звука с помощью функции tf.signal.mfccs_from_log_mel_spectrograms. Полученные признаки используются для обучения модели.

Для обучения модели необходимо подготовить данные. В данном случае используется текст с указанием всех возможных классов и соответствующая метка для каждого класса. Для удобства преобразуется текст в one-hot кодировку с помощью метода tf.keras.preprocessing.text.one_hot. Затем подготовленные данные передаются в модель для обучения с помощью метода fit.

После обучения модели предсказываются результаты на тех же данных с помощью метода predict. Выбирается индекс с максимальной вероятностью и соответствующий ему класс.

В конце выводятся предсказанные метки классов.


3. Пример кода «Рекомендательная система».

Для удобства, опишем процесс в пяти шагах:

Шаг 1: Сбор данных

Первый шаг в создании рекомендательной системы – сбор данных. Для этого нужно собрать данные о пользователях, например, их предпочтения, покупки, историю просмотров и т. д. Эти данные можно получить из различных источников, таких как базы данных или логи пользователей.

Страница 5