Reconocimiento de voz con mxnet y sagemaker data science engineering ingeniería de datos cuánto valió 1 bitcoin en 2009

Mp3 espectrograma wav etiqueta voz 0 datos / mp3 / muestra – 00001 – matthew. Datos Mp3 / espectrogramas / muestra – 00001 – matthew. Png data / wav / sample – 00001 – matthew. Wav 6 matthew 1 data / mp3 / sample – 00002 – joey. Datos Mp3 / espectrogramas / muestra – 00002 – joey. Png data / wav / sample – 00002 – joey. Wav 2 joey 2 data / mp3 / muestra – 00003 – kendra. Datos Mp3 / espectrogramas / muestra – 00003 – kendra. Png data / wav / sample – 00003 – kendra. Wav 4 kendra 3 datos / mp3 / muestra – 00004 – kimberly. Datos Mp3 / espectrogramas / muestra – 00004 – kimberly. Png data / wav / sample – 00004 – kimberly. Wav 5 kimberly 4 datos / mp3 / muestra – 00005 – kimberly. Datos Mp3 / espectrogramas / muestra – 00005 – kimberly. Png data / wav / sample – 00005 – kimberly. Wav 5 kimberly

Lo siguiente que hacemos es dividir los datos en conjuntos de datos de entrenamiento / validación / prueba. Dado que este es un problema de clasificación, queremos que nuestros conjuntos de datos bitcoins sean equivalentes entre ellos, en otras palabras, necesitan tener la misma proporción de voces utilizadas. Esto se llama muestreo estratificado. La siguiente celda de código hará exactamente eso. Es un poco difícil de leer, pero hará lo que se supone que debe hacer.

Tren = df. Agrupar por ( &cotización de bitcoin hoy en la india; voz" ). Aplicar (lambda x: x. Muestra (frac =. 8)). Reset_index (0, drop = true) validation = df. Loc [~ df. Índice Isin (tren. Índice),:]. Agrupar por ( "voz" ). Aplicar (lambda x: x. Muestra (frac =. 5)). Reset_index (0, drop = true) test = df. Loc [np. Logical_not (np. Logical_xor (~ df. Index. Isin (train. Index), ~ df. Index. Isin (validation. Index))),:]

El conjunto de datos de entrenamiento se utilizará para entrenar el modelo. El conjunto de datos de validación se utilizará para mejorar el modelo, es decir, queremos aumentar el rendimiento en el conjunto de datos de validación. En producción, usaremos el modelo con la métrica de rendimiento más alto en el conjunto de datos de validación. El conjunto de datos de prueba se usa solo para tener una idea real de cómo se desempeñará el modelo con datos invisibles.

Cuando esté satisfecho con la estructura de su modelo (arquitectura), reconstruya el artefacto del modelo en todos los datos. Este será tu modelo de producción. Mucha gente usa en producción, el modelo basado en el conjunto de datos de entrenamiento, pero esto es un error. Usa todos los datos que tienes disponibles para construir el modelo. No hay relación alguna entre lo que significa construir la arquitectura del modelo y lo que significa construir el modelo binario. Al construir el modelo binario, ya no hay problema de sobreajuste.

Smoothing_constant =. 01 para e en rango (épocas): moving_loss = 0 para i, (datos, etiqueta) en enumerar (train_data): datos = datos. As_in_context (ctx) label = label. As_in_context (ctx) con autograd. Record (): output = net (data) loss_result = loss (output, label) loss_result. Entrenador hacia atrás (). Step (batch_size) curr_loss = nd. Mean (loss_result). Asscalar () moving_loss = (curr_loss if ((i == 0) y el tipo de cambio de bitcoins (e == 0)) else (1 – smoothing_constant) * moving_loss + smoothing_constant * curr_loss) validation_accuracy = measure_performance (net, ctx, validation_data) train_accuracy = measure_performance (net, ctx, train_data) print ( "época% s. Pérdida:% s, train_acc% s, test_acc% s" % (e, moving_loss, train_accuracy, validation_accuracy))

Lo que hace el código es que entrena en lotes y llama manualmente backpropagation para minimizar la función de pérdida. También hay algunos registros adjuntos para que pueda ver el progreso. La parte de registro utiliza una función measure_performance, que calcula la precisión. La función esencialmente ejecuta inferencia con la versión actual del modelo en lotes de datos.

Elif content_type == "aplicación / json" : json_array = json. Cargas (input_data, encoding = "utf-8" ) mpeg_files = [mpeg2file (base64. B64decode (base64audio) en el archivo de base de datos) para mpeg2wav (mpeg vájalo en la red de puntos), vg_files = vp. img_file en img_files] np_arr = np. Concatenar (np_arrs) nd_arr = nd. Respuesta de la matriz (np_arr) = respuesta del modelo (nd_arr) = nd. Argmax (respuesta, eje = 1) \

Volviendo al portátil jupyter, nos gustaría implementar el modelo que hemos construido anteriormente. Desafortunadamente, el script voice-recognition-sagemaker-script.Py que estaba empaquetado con el valor del modelo de bitcoin en este momento, no contenía la parte de alojamiento. Esto se debe a que hemos entrenado el modelo antes de agregar el resto de las funciones. Implementar ahora simplemente fallaría. La mejor opción es volver a ejecutar el trabajo de capacitación, así que, básicamente, vuelva a ejecutar la celda con estimator.Fit (entradas). Verás la misma salida que antes.

banner