Audio MNIST Digit Recognition¶

Source: Pixabay


Context¶


In the last few decades, significant advances have been achieved in the area of audio recognition. A lot of research is ongoing globally to recognize audio data or speech using Deep Learning. The most common use case in this field is converting audio to spectrograms and vice versa.

Audio in its raw form is usually a wave and to capture that using a data structure, we need to have a huge array of amplitudes even for a very short audio clip. Although it depends on the sampling rate of the sound wave, this structured data conversion for any audio wave is very voluminous even for low sampling rates. So it becomes a problem to store and computationally very expensive to do even simple calculations on such data.

One of the best economical alternatives to this is using spectrograms. Spectrograms are created by doing Fourier or Short Time Fourier Transforms on sound waves. There are various kinds of spectrograms, but the ones we will be using are called MFCC spectrograms. To put it in simple terms, a spectrogram is a way to visually encapsulate audio data. It is a graph on a 2-D plane where the X-axis represents time and the Y-axis represents Mel Coefficients. But since it is continuous on a 2-D plane, we can treat this as an image.


Objective¶


The objective here is to build an Artificial Neural Network that can look at Mel or MFCC spectrograms of audio files and classify them into the 10 classes that represent the 10 unique digits in the spoken Engilsh language. The audio files are recordings of different speakers uttering a particular digit and the corresponding class to be predicted is the digit itself.


Dataset¶


The dataset we will use is the Audio MNIST dataset, which has audio files (having .wav extension) stored in 10 different folders. Each folder consists of these digits spoken by a particular speaker.

Understanding the required packages¶

  • Librosa: Librosa is a Python package that helps in dealing with audio data. librosa.display visualizes and displays the audio data using Matplotlib. Similarly, there exists a collection of submodules under librosa that provides various other functionalities.

Run the command in the next cell to install the library.

  • IPython.display: Display is a public API to display the tools available in Ipython. In this case study, we will create an audio object to display the digits in the Audio MNIST data.
  • tqdm: tqdm is a Python package that allows us to add a progress bar to our application. This package will help us in iterating over the audio data.

Installing Librosa¶

In [ ]:
!pip install librosa
Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/
Requirement already satisfied: librosa in /usr/local/lib/python3.7/dist-packages (0.8.1)
Requirement already satisfied: joblib>=0.14 in /usr/local/lib/python3.7/dist-packages (from librosa) (1.1.0)
Requirement already satisfied: scikit-learn!=0.19.0,>=0.14.0 in /usr/local/lib/python3.7/dist-packages (from librosa) (1.0.2)
Requirement already satisfied: decorator>=3.0.0 in /usr/local/lib/python3.7/dist-packages (from librosa) (4.4.2)
Requirement already satisfied: numba>=0.43.0 in /usr/local/lib/python3.7/dist-packages (from librosa) (0.56.0)
Requirement already satisfied: resampy>=0.2.2 in /usr/local/lib/python3.7/dist-packages (from librosa) (0.3.1)
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.7/dist-packages (from librosa) (21.3)
Requirement already satisfied: soundfile>=0.10.2 in /usr/local/lib/python3.7/dist-packages (from librosa) (0.10.3.post1)
Requirement already satisfied: numpy>=1.15.0 in /usr/local/lib/python3.7/dist-packages (from librosa) (1.21.6)
Requirement already satisfied: scipy>=1.0.0 in /usr/local/lib/python3.7/dist-packages (from librosa) (1.7.3)
Requirement already satisfied: pooch>=1.0 in /usr/local/lib/python3.7/dist-packages (from librosa) (1.6.0)
Requirement already satisfied: audioread>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from librosa) (2.1.9)
Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.7/dist-packages (from numba>=0.43.0->librosa) (4.12.0)
Requirement already satisfied: setuptools in /usr/local/lib/python3.7/dist-packages (from numba>=0.43.0->librosa) (57.4.0)
Requirement already satisfied: llvmlite<0.40,>=0.39.0dev0 in /usr/local/lib/python3.7/dist-packages (from numba>=0.43.0->librosa) (0.39.0)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging>=20.0->librosa) (3.0.9)
Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.7/dist-packages (from pooch>=1.0->librosa) (2.23.0)
Requirement already satisfied: appdirs>=1.3.0 in /usr/local/lib/python3.7/dist-packages (from pooch>=1.0->librosa) (1.4.4)
Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests>=2.19.0->pooch>=1.0->librosa) (3.0.4)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests>=2.19.0->pooch>=1.0->librosa) (2022.6.15)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests>=2.19.0->pooch>=1.0->librosa) (1.24.3)
Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests>=2.19.0->pooch>=1.0->librosa) (2.10)
Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn!=0.19.0,>=0.14.0->librosa) (3.1.0)
Requirement already satisfied: cffi>=1.0 in /usr/local/lib/python3.7/dist-packages (from soundfile>=0.10.2->librosa) (1.15.1)
Requirement already satisfied: pycparser in /usr/local/lib/python3.7/dist-packages (from cffi>=1.0->soundfile>=0.10.2->librosa) (2.21)
Requirement already satisfied: typing-extensions>=3.6.4 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata->numba>=0.43.0->librosa) (4.1.1)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata->numba>=0.43.0->librosa) (3.8.1)

Importing the necessary libraries and loading the data¶

In [ ]:
# For Audio Preprocessing
import librosa
import librosa.display as dsp
from IPython.display import Audio

# For Data Preprocessing
import pandas as pd
import numpy as np
import os

# For Data Visualization
import matplotlib.pyplot as plt
import seaborn as sns
from tqdm import tqdm


#The data is provided as a zip file
import zipfile
import os
In [ ]:
sns.set_style("dark")

Mounting the Drive and Unzipping the file¶

In [ ]:
from google.colab import drive
drive.mount('/content/drive')
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
In [ ]:
path = '/content/drive/MyDrive/Audio_MNIST_Archive.zip'

#The data is provided as a zip file so we need to extract the files from the zip file
with zipfile.ZipFile(path, 'r') as zip_ref:
    zip_ref.extractall()

Let's read and check some of the audio samples¶

The below function called "get_audio" takes a digit as an argument and plots the audio wave and returns the audio for a given digit.

Let's understand the functioning of some of the new functions used to create the get_audio() function.

  • .wav: .wav is a file format like .csv which stores the raw audio format. We will load the .wav file using the librosa package.
  • dsp.waveshow(): It visualizes the waveform in the time domain. This method creates a plot that alternates between a raw samples-based view of the signal and an amplitude-envelope view of the signal. The "sr" parameter is the sampling rate, i.e., samples per second.
  • Audio(): From the Ipython package, we can create an audio object.
In [ ]:
def get_audio(digit = 0):

    # Audio Sample Directory
    sample = np.random.randint(1, 10)

    # Index of Audio
    index = np.random.randint(1, 5)
    
    # Modified file location
    if sample < 10:
        file = f"/content/data/0{sample}/{digit}_0{sample}_{index}.wav"

    else:
        file = f"/content/data/{sample}/{digit}_{sample}_{index}.wav"

    
    # Get Audio from the location
    # Audio will be automatically resampled to the given rate (default sr = 22050)
    data, sample_rate = librosa.load(file)
    
    # Plot the audio wave
    dsp.waveshow(data, sr = sample_rate)
    plt.show()
    
    # Show the widget
    return Audio(data = data, rate = sample_rate)
In [ ]:
# Show the audio and plot of digit 0
get_audio(0)
Out[ ]:
Your browser does not support the audio element.
In [ ]:
# Show the audio and plot of digit 1
get_audio(1)
Out[ ]:
Your browser does not support the audio element.
In [ ]:
# Show the audio and plot of digit 2
get_audio(2)
Out[ ]:
Your browser does not support the audio element.
In [ ]:
# Show the audio and plot of digit 3
get_audio(3)
Out[ ]:
Your browser does not support the audio element.
In [ ]:
# Show the audio and plot of digit 4
get_audio(4)
Out[ ]:
Your browser does not support the audio element.
In [ ]:
# Show the audio and plot of digit 5
get_audio(5)
Out[ ]:
Your browser does not support the audio element.
In [ ]:
# Show the audio and plot of digit 6
get_audio(6)
Out[ ]:
Your browser does not support the audio element.
In [ ]:
# Show the audio and plot of digit 7
get_audio(7)
Out[ ]:
Your browser does not support the audio element.
In [ ]:
# Show the audio and plot of digit 8
get_audio(8)
Out[ ]:
Your browser does not support the audio element.
In [ ]:
# Show the audio and plot of digit 9
get_audio(9)
Out[ ]:
Your browser does not support the audio element.

Observations:

  • The X-axis represents time and Y-axis represents the amplitude of the vibrations.
  • The intuition behind the Fourier Transform is that any wave can be broken down or deconstructed as a sum of many composite sine waves. Since these are composed of sine waves, they are symmetric about the time axis, i.e, they extend equally above and below the time axis at a particular time.
  • From the various audio plots ranging from 0 to 9, we can observe the amplitude at a given point in time. For example, when we say "Zero", the "Z" sound has low amplitude and the "ero" sound has higher amplitude. Similarly, the remaining digits can be interpreted by looking at the visualizations.

Visualizing the spectrogram of the audio data¶

What is a spectrogram?¶

A spectrogram is a visual way of representing the signal strength or “loudness” of a signal over time at various frequencies or time steps present in a particular waveform. A spectrogram gives a detailed view of our audio. It represents amplitude, frequency, and time in a single plot.

Since spectrograms are continuous plots, they can be interpreted as an image. Different spectrograms have different attributes on their axes and they are usually different to interpret. In a Research and Development scenario, we make use of a vocoder, which is an encoder that converts spectrograms back to audio using parameters learned by machine learning. One great vocoder is the WaveNet vocoder which is used in almost all Text-to-Speech architectures.

Here, we will be using MFCC spectrograms, which are also called Mel spectrograms.

In [ ]:
# A function which returns audio file for a mentioned digit
def get_audio_raw(digit = 0):

    # Audio Sample Directory
    sample = np.random.randint(1, 10)

    # Index of Audio
    index = np.random.randint(1, 5)
    
    # Modified file location
    if sample < 10:
        file = f"/content/data/0{sample}/{digit}_0{sample}_{index}.wav"

    else:
        file = f"/content/data/{sample}/{digit}_{sample}_{index}.wav"

    
    # Get Audio from the location
    data, sample_rate = librosa.load(file)

    # Return audio
    return data, sample_rate

Extracting features from the audio file¶

Mel-frequency cepstral coefficients (MFCCs) Feature Extraction

MFCCs are usually the final features used in many machine learning models trained on audio data. They are usually a set of mel coefficients defined for each time step through which the raw audio data can be encoded. So for example, if we have an audio sample extending for 30 time steps, and we are defining each time step by 40 Mel Coefficients, our entire sample can be represented by 40 * 30 Mel Coefficients. And if we want to create a Mel Spectrogram out of it, our spectrogram will resemble a 2-D array of 40 horizontal rows and 30 vertical columns.

In this time step, we will first extract the Mel Coefficents for each audio file and add them to our dataset.

  • extract_features : Returns the MFCC extracted features for an audio file.
  • process_and_create_dataset : Iterate through the audio of each digit, extract the features using the extract_features() function, and append the data into a DataFrame.

Creating a function that extracts the data from audio files

In [ ]:
# Will take an audio file as input and return extracted features using MEL_FREQUENCY CEPSTRAL COEFFICIENT as the output
def extract_features(file):

    # Load audio and its sample rate
    audio, sample_rate = librosa.load(file)

    # Extract features using mel-frequency coefficient
    extracted_features = librosa.feature.mfcc(y = audio,
                                              sr = sample_rate,
                                              n_mfcc = 40)
    
    # Scale the extracted features
    extracted_features = np.mean(extracted_features.T, axis = 0)

    # Return the extracted features
    return extracted_features


def preprocess_and_create_dataset():

    # Path of the folder where the audio files are present
    root_folder_path = "/content/data/"

    # Empty List to create dataset
    dataset = []
    
    # Iterating through folders where each folder has the audio of each digit
    for folder in tqdm(range(1, 11)):

        if folder < 10:

            # Path of the folder
            folder = os.path.join(root_folder_path, "0" + str(folder))

        else:
            folder = os.path.join(root_folder_path, str(folder))
            
        # Iterate through each file of the present folder
        for file in tqdm(os.listdir(folder)):

            # Path of the file
            abs_file_path = os.path.join(folder, file)

            # Pass path of file to the extracted_features() function to create features
            extracted_features = extract_features(abs_file_path) 

            # Class of the audio, i.e., the digit it represents
            class_label = file[0]
            
            # Append a list where the feature represents a column and class of the digit represents another column
            dataset.append([extracted_features, class_label])
    
    # After iterating through all the folders, convert the list to a DataFrame
    return pd.DataFrame(dataset, columns = ['features', 'class'])

Now. let's create the dataset using the defined function

In [ ]:
# Create the dataset by calling the function
dataset = preprocess_and_create_dataset()
  0%|          | 0/10 [00:00<?, ?it/s]
  0%|          | 0/500 [00:00<?, ?it/s]
  0%|          | 1/500 [00:00<00:52,  9.54it/s]
  0%|          | 2/500 [00:00<00:59,  8.33it/s]
  1%|          | 3/500 [00:00<01:04,  7.70it/s]
  1%|          | 4/500 [00:00<01:08,  7.24it/s]
  1%|          | 5/500 [00:00<01:14,  6.69it/s]
  1%|          | 6/500 [00:00<01:08,  7.20it/s]
  1%|▏         | 7/500 [00:00<01:08,  7.15it/s]
  2%|▏         | 8/500 [00:01<01:05,  7.50it/s]
  2%|▏         | 9/500 [00:01<01:04,  7.62it/s]
  2%|▏         | 10/500 [00:01<01:07,  7.23it/s]
  2%|▏         | 11/500 [00:01<01:11,  6.83it/s]
  2%|▏         | 12/500 [00:01<01:08,  7.08it/s]
  3%|▎         | 13/500 [00:01<01:06,  7.32it/s]
  3%|▎         | 14/500 [00:01<01:07,  7.19it/s]
  3%|▎         | 16/500 [00:02<00:58,  8.32it/s]
  3%|▎         | 17/500 [00:02<00:56,  8.55it/s]
  4%|▎         | 18/500 [00:02<00:57,  8.38it/s]
  4%|▍         | 20/500 [00:02<00:51,  9.24it/s]
  4%|▍         | 21/500 [00:02<00:53,  8.90it/s]
  4%|▍         | 22/500 [00:02<00:54,  8.77it/s]
  5%|▍         | 24/500 [00:02<00:50,  9.49it/s]
  5%|▌         | 25/500 [00:03<00:52,  9.04it/s]
  5%|▌         | 27/500 [00:03<00:47,  9.98it/s]
  6%|▌         | 29/500 [00:03<00:44, 10.67it/s]
  6%|▌         | 31/500 [00:03<00:43, 10.80it/s]
  7%|▋         | 33/500 [00:03<00:40, 11.60it/s]
  7%|▋         | 35/500 [00:03<00:38, 12.15it/s]
  7%|▋         | 37/500 [00:04<00:41, 11.29it/s]
  8%|▊         | 39/500 [00:04<00:44, 10.47it/s]
  8%|▊         | 41/500 [00:04<00:49,  9.20it/s]
  8%|▊         | 42/500 [00:04<00:52,  8.71it/s]
  9%|▊         | 43/500 [00:04<00:55,  8.28it/s]
  9%|▉         | 44/500 [00:05<00:59,  7.64it/s]
  9%|▉         | 45/500 [00:05<01:02,  7.24it/s]
  9%|▉         | 46/500 [00:05<01:06,  6.82it/s]
  9%|▉         | 47/500 [00:05<01:07,  6.67it/s]
 10%|▉         | 48/500 [00:05<01:07,  6.70it/s]
 10%|▉         | 49/500 [00:05<01:05,  6.90it/s]
 10%|█         | 50/500 [00:05<01:02,  7.18it/s]
 10%|█         | 51/500 [00:06<01:05,  6.80it/s]
 10%|█         | 52/500 [00:06<01:02,  7.12it/s]
 11%|█         | 53/500 [00:06<01:01,  7.30it/s]
 11%|█         | 54/500 [00:06<00:59,  7.53it/s]
 11%|█         | 56/500 [00:06<00:53,  8.23it/s]
 11%|█▏        | 57/500 [00:06<00:58,  7.51it/s]
 12%|█▏        | 58/500 [00:07<01:01,  7.16it/s]
 12%|█▏        | 59/500 [00:07<01:05,  6.75it/s]
 12%|█▏        | 60/500 [00:07<01:05,  6.74it/s]
 12%|█▏        | 61/500 [00:07<01:02,  7.07it/s]
 13%|█▎        | 63/500 [00:07<00:52,  8.25it/s]
 13%|█▎        | 65/500 [00:07<00:48,  8.99it/s]
 13%|█▎        | 66/500 [00:07<00:47,  9.14it/s]
 14%|█▎        | 68/500 [00:08<00:43,  9.94it/s]
 14%|█▍        | 69/500 [00:08<00:43,  9.80it/s]
 14%|█▍        | 70/500 [00:08<00:44,  9.59it/s]
 14%|█▍        | 71/500 [00:08<00:46,  9.13it/s]
 14%|█▍        | 72/500 [00:08<00:51,  8.30it/s]
 15%|█▍        | 73/500 [00:08<00:54,  7.87it/s]
 15%|█▍        | 74/500 [00:08<00:53,  7.92it/s]
 15%|█▌        | 75/500 [00:09<00:53,  8.01it/s]
 15%|█▌        | 76/500 [00:09<00:54,  7.80it/s]
 15%|█▌        | 77/500 [00:09<01:00,  6.94it/s]
 16%|█▌        | 79/500 [00:09<00:51,  8.18it/s]
 16%|█▌        | 80/500 [00:09<00:51,  8.20it/s]
 16%|█▌        | 81/500 [00:09<00:53,  7.89it/s]
 16%|█▋        | 82/500 [00:09<00:53,  7.86it/s]
 17%|█▋        | 83/500 [00:10<00:59,  7.01it/s]
 17%|█▋        | 84/500 [00:10<00:57,  7.27it/s]
 17%|█▋        | 85/500 [00:10<01:00,  6.87it/s]
 17%|█▋        | 86/500 [00:10<00:56,  7.28it/s]
 17%|█▋        | 87/500 [00:10<00:58,  7.10it/s]
 18%|█▊        | 88/500 [00:10<00:57,  7.21it/s]
 18%|█▊        | 89/500 [00:10<00:55,  7.40it/s]
 18%|█▊        | 90/500 [00:11<00:56,  7.27it/s]
 18%|█▊        | 91/500 [00:11<00:56,  7.18it/s]
 18%|█▊        | 92/500 [00:11<00:53,  7.60it/s]
 19%|█▊        | 93/500 [00:11<00:51,  7.89it/s]
 19%|█▉        | 94/500 [00:11<00:53,  7.63it/s]
 19%|█▉        | 96/500 [00:11<00:45,  8.81it/s]
 19%|█▉        | 97/500 [00:11<00:46,  8.64it/s]
 20%|█▉        | 99/500 [00:12<00:41,  9.67it/s]
 20%|██        | 100/500 [00:12<00:43,  9.21it/s]
 20%|██        | 101/500 [00:12<00:44,  8.99it/s]
 20%|██        | 102/500 [00:12<00:46,  8.63it/s]
 21%|██        | 103/500 [00:12<00:49,  8.08it/s]
 21%|██        | 104/500 [00:12<00:50,  7.87it/s]
 21%|██        | 105/500 [00:12<00:47,  8.33it/s]
 21%|██        | 106/500 [00:12<00:46,  8.45it/s]
 21%|██▏       | 107/500 [00:13<00:47,  8.29it/s]
 22%|██▏       | 108/500 [00:13<00:46,  8.39it/s]
 22%|██▏       | 109/500 [00:13<00:45,  8.68it/s]
 22%|██▏       | 110/500 [00:13<00:50,  7.68it/s]
 22%|██▏       | 111/500 [00:13<00:53,  7.28it/s]
 22%|██▏       | 112/500 [00:13<00:53,  7.21it/s]
 23%|██▎       | 113/500 [00:13<00:52,  7.38it/s]
 23%|██▎       | 114/500 [00:14<00:55,  6.95it/s]
 23%|██▎       | 115/500 [00:14<00:51,  7.51it/s]
 23%|██▎       | 116/500 [00:14<00:53,  7.16it/s]
 23%|██▎       | 117/500 [00:14<00:54,  7.04it/s]
 24%|██▎       | 118/500 [00:14<00:49,  7.65it/s]
 24%|██▍       | 119/500 [00:14<00:47,  7.97it/s]
 24%|██▍       | 120/500 [00:14<00:48,  7.90it/s]
 24%|██▍       | 121/500 [00:14<00:48,  7.89it/s]
 24%|██▍       | 122/500 [00:15<00:47,  8.00it/s]
 25%|██▍       | 123/500 [00:15<00:46,  8.11it/s]
 25%|██▍       | 124/500 [00:15<00:49,  7.52it/s]
 25%|██▌       | 125/500 [00:15<00:49,  7.51it/s]
 25%|██▌       | 126/500 [00:15<00:48,  7.66it/s]
 25%|██▌       | 127/500 [00:15<00:47,  7.84it/s]
 26%|██▌       | 128/500 [00:15<00:49,  7.59it/s]
 26%|██▌       | 129/500 [00:15<00:48,  7.72it/s]
 26%|██▌       | 130/500 [00:16<00:47,  7.73it/s]
 26%|██▌       | 131/500 [00:16<00:49,  7.41it/s]
 26%|██▋       | 132/500 [00:16<00:47,  7.68it/s]
 27%|██▋       | 133/500 [00:16<00:50,  7.32it/s]
 27%|██▋       | 134/500 [00:16<00:48,  7.60it/s]
 27%|██▋       | 135/500 [00:16<00:51,  7.08it/s]
 27%|██▋       | 136/500 [00:16<00:48,  7.43it/s]
 27%|██▋       | 137/500 [00:17<00:48,  7.53it/s]
 28%|██▊       | 138/500 [00:17<00:45,  7.89it/s]
 28%|██▊       | 139/500 [00:17<00:46,  7.70it/s]
 28%|██▊       | 140/500 [00:17<00:45,  8.00it/s]
 28%|██▊       | 141/500 [00:17<00:44,  8.05it/s]
 28%|██▊       | 142/500 [00:17<00:47,  7.53it/s]
 29%|██▊       | 143/500 [00:17<00:46,  7.65it/s]
 29%|██▉       | 145/500 [00:18<00:40,  8.84it/s]
 29%|██▉       | 146/500 [00:18<00:42,  8.38it/s]
 29%|██▉       | 147/500 [00:18<00:41,  8.52it/s]
 30%|██▉       | 149/500 [00:18<00:36,  9.61it/s]
 30%|███       | 150/500 [00:18<00:38,  9.09it/s]
 30%|███       | 151/500 [00:18<00:42,  8.29it/s]
 31%|███       | 153/500 [00:18<00:39,  8.88it/s]
 31%|███       | 154/500 [00:19<00:38,  9.00it/s]
 31%|███       | 155/500 [00:19<00:42,  8.21it/s]
 31%|███       | 156/500 [00:19<00:44,  7.70it/s]
 31%|███▏      | 157/500 [00:19<00:44,  7.62it/s]
 32%|███▏      | 158/500 [00:19<00:43,  7.86it/s]
 32%|███▏      | 159/500 [00:19<00:43,  7.83it/s]
 32%|███▏      | 161/500 [00:19<00:39,  8.67it/s]
 32%|███▏      | 162/500 [00:20<00:40,  8.43it/s]
 33%|███▎      | 163/500 [00:20<00:41,  8.14it/s]
 33%|███▎      | 164/500 [00:20<00:42,  7.90it/s]
 33%|███▎      | 165/500 [00:20<00:43,  7.76it/s]
 33%|███▎      | 166/500 [00:20<00:45,  7.37it/s]
 33%|███▎      | 167/500 [00:20<00:42,  7.90it/s]
 34%|███▎      | 168/500 [00:20<00:39,  8.33it/s]
 34%|███▍      | 169/500 [00:20<00:38,  8.61it/s]
 34%|███▍      | 171/500 [00:21<00:33,  9.77it/s]
 35%|███▍      | 173/500 [00:21<00:30, 10.61it/s]
 35%|███▌      | 175/500 [00:21<00:28, 11.61it/s]
 35%|███▌      | 177/500 [00:21<00:27, 11.80it/s]
 36%|███▌      | 179/500 [00:21<00:29, 10.92it/s]
 36%|███▌      | 181/500 [00:21<00:30, 10.33it/s]
 37%|███▋      | 183/500 [00:22<00:33,  9.59it/s]
 37%|███▋      | 185/500 [00:22<00:30, 10.43it/s]
 37%|███▋      | 187/500 [00:22<00:33,  9.35it/s]
 38%|███▊      | 188/500 [00:22<00:34,  8.99it/s]
 38%|███▊      | 189/500 [00:22<00:35,  8.81it/s]
 38%|███▊      | 190/500 [00:23<00:35,  8.83it/s]
 38%|███▊      | 191/500 [00:23<00:35,  8.78it/s]
 38%|███▊      | 192/500 [00:23<00:34,  8.86it/s]
 39%|███▊      | 193/500 [00:23<00:34,  8.89it/s]
 39%|███▉      | 194/500 [00:23<00:35,  8.56it/s]
 39%|███▉      | 195/500 [00:23<00:37,  8.23it/s]
 39%|███▉      | 196/500 [00:23<00:42,  7.18it/s]
 39%|███▉      | 197/500 [00:23<00:42,  7.15it/s]
 40%|███▉      | 198/500 [00:24<00:42,  7.08it/s]
 40%|████      | 200/500 [00:24<00:36,  8.17it/s]
 40%|████      | 202/500 [00:24<00:32,  9.08it/s]
 41%|████      | 203/500 [00:24<00:32,  9.07it/s]
 41%|████      | 204/500 [00:24<00:34,  8.59it/s]
 41%|████      | 205/500 [00:24<00:35,  8.30it/s]
 41%|████      | 206/500 [00:24<00:34,  8.50it/s]
 41%|████▏     | 207/500 [00:25<00:33,  8.75it/s]
 42%|████▏     | 208/500 [00:25<00:35,  8.12it/s]
 42%|████▏     | 210/500 [00:25<00:30,  9.36it/s]
 42%|████▏     | 212/500 [00:25<00:27, 10.34it/s]
 43%|████▎     | 214/500 [00:25<00:29,  9.86it/s]
 43%|████▎     | 215/500 [00:25<00:29,  9.78it/s]
 43%|████▎     | 216/500 [00:25<00:30,  9.40it/s]
 43%|████▎     | 217/500 [00:26<00:30,  9.35it/s]
 44%|████▎     | 218/500 [00:26<00:29,  9.46it/s]
 44%|████▍     | 219/500 [00:26<00:33,  8.51it/s]
 44%|████▍     | 220/500 [00:26<00:31,  8.85it/s]
 44%|████▍     | 221/500 [00:26<00:31,  8.76it/s]
 44%|████▍     | 222/500 [00:26<00:31,  8.96it/s]
 45%|████▍     | 223/500 [00:26<00:38,  7.28it/s]
 45%|████▌     | 225/500 [00:27<00:29,  9.20it/s]
 45%|████▌     | 226/500 [00:27<00:30,  9.00it/s]
 45%|████▌     | 227/500 [00:27<00:32,  8.42it/s]
 46%|████▌     | 229/500 [00:27<00:29,  9.21it/s]
 46%|████▌     | 231/500 [00:27<00:26, 10.10it/s]
 47%|████▋     | 233/500 [00:27<00:26, 10.01it/s]
 47%|████▋     | 234/500 [00:27<00:27,  9.65it/s]
 47%|████▋     | 235/500 [00:28<00:28,  9.16it/s]
 47%|████▋     | 236/500 [00:28<00:28,  9.18it/s]
 48%|████▊     | 238/500 [00:28<00:24, 10.63it/s]
 48%|████▊     | 240/500 [00:28<00:21, 11.90it/s]
 48%|████▊     | 242/500 [00:28<00:21, 12.00it/s]
 49%|████▉     | 244/500 [00:28<00:21, 12.18it/s]
 49%|████▉     | 246/500 [00:28<00:20, 12.15it/s]
 50%|████▉     | 248/500 [00:29<00:20, 12.38it/s]
 50%|█████     | 250/500 [00:29<00:19, 13.04it/s]
 50%|█████     | 252/500 [00:29<00:18, 13.13it/s]
 51%|█████     | 254/500 [00:29<00:17, 13.89it/s]
 51%|█████     | 256/500 [00:29<00:16, 14.57it/s]
 52%|█████▏    | 258/500 [00:29<00:16, 14.80it/s]
 52%|█████▏    | 260/500 [00:29<00:16, 14.47it/s]
 52%|█████▏    | 262/500 [00:30<00:15, 15.43it/s]
 53%|█████▎    | 264/500 [00:30<00:15, 15.60it/s]
 53%|█████▎    | 266/500 [00:30<00:15, 15.12it/s]
 54%|█████▎    | 268/500 [00:30<00:16, 13.87it/s]
 54%|█████▍    | 270/500 [00:30<00:16, 14.26it/s]
 54%|█████▍    | 272/500 [00:30<00:15, 14.28it/s]
 55%|█████▍    | 274/500 [00:30<00:16, 13.89it/s]
 55%|█████▌    | 276/500 [00:31<00:15, 14.21it/s]
 56%|█████▌    | 278/500 [00:31<00:14, 15.12it/s]
 56%|█████▌    | 280/500 [00:31<00:14, 14.82it/s]
 56%|█████▋    | 282/500 [00:31<00:14, 14.78it/s]
 57%|█████▋    | 284/500 [00:31<00:14, 14.57it/s]
 57%|█████▋    | 286/500 [00:31<00:14, 14.71it/s]
 58%|█████▊    | 288/500 [00:31<00:13, 15.30it/s]
 58%|█████▊    | 290/500 [00:31<00:14, 14.75it/s]
 58%|█████▊    | 292/500 [00:32<00:13, 14.90it/s]
 59%|█████▉    | 294/500 [00:32<00:14, 14.03it/s]
 59%|█████▉    | 296/500 [00:32<00:14, 14.22it/s]
 60%|█████▉    | 298/500 [00:32<00:14, 14.03it/s]
 60%|██████    | 300/500 [00:32<00:13, 14.57it/s]
 60%|██████    | 302/500 [00:32<00:12, 15.33it/s]
 61%|██████    | 304/500 [00:32<00:13, 14.22it/s]
 61%|██████    | 306/500 [00:33<00:13, 14.41it/s]
 62%|██████▏   | 308/500 [00:33<00:13, 13.83it/s]
 62%|██████▏   | 310/500 [00:33<00:13, 14.41it/s]
 62%|██████▏   | 312/500 [00:33<00:13, 14.39it/s]
 63%|██████▎   | 314/500 [00:33<00:13, 13.58it/s]
 63%|██████▎   | 316/500 [00:33<00:13, 13.68it/s]
 64%|██████▎   | 318/500 [00:33<00:12, 14.48it/s]
 64%|██████▍   | 320/500 [00:34<00:12, 14.32it/s]
 64%|██████▍   | 322/500 [00:34<00:13, 13.65it/s]
 65%|██████▍   | 324/500 [00:34<00:12, 14.00it/s]
 65%|██████▌   | 326/500 [00:34<00:13, 13.30it/s]
 66%|██████▌   | 328/500 [00:34<00:11, 14.39it/s]
 66%|██████▌   | 330/500 [00:34<00:11, 14.91it/s]
 66%|██████▋   | 332/500 [00:34<00:11, 15.08it/s]
 67%|██████▋   | 334/500 [00:35<00:11, 14.71it/s]
 67%|██████▋   | 336/500 [00:35<00:11, 14.61it/s]
 68%|██████▊   | 338/500 [00:35<00:11, 14.52it/s]
 68%|██████▊   | 340/500 [00:35<00:10, 14.94it/s]
 68%|██████▊   | 342/500 [00:35<00:10, 14.62it/s]
 69%|██████▉   | 344/500 [00:35<00:10, 14.52it/s]
 69%|██████▉   | 346/500 [00:35<00:10, 14.70it/s]
 70%|██████▉   | 348/500 [00:36<00:10, 14.34it/s]
 70%|███████   | 350/500 [00:36<00:11, 13.57it/s]
 70%|███████   | 352/500 [00:36<00:10, 14.27it/s]
 71%|███████   | 354/500 [00:36<00:10, 14.30it/s]
 71%|███████   | 356/500 [00:36<00:09, 14.85it/s]
 72%|███████▏  | 358/500 [00:36<00:10, 13.99it/s]
 72%|███████▏  | 360/500 [00:36<00:09, 14.29it/s]
 72%|███████▏  | 362/500 [00:36<00:09, 14.54it/s]
 73%|███████▎  | 364/500 [00:37<00:09, 14.31it/s]
 73%|███████▎  | 366/500 [00:37<00:09, 14.16it/s]
 74%|███████▎  | 368/500 [00:37<00:08, 14.80it/s]
 74%|███████▍  | 370/500 [00:37<00:08, 14.60it/s]
 74%|███████▍  | 372/500 [00:37<00:08, 14.39it/s]
 75%|███████▍  | 374/500 [00:37<00:08, 14.37it/s]
 75%|███████▌  | 376/500 [00:37<00:08, 14.37it/s]
 76%|███████▌  | 378/500 [00:38<00:08, 14.15it/s]
 76%|███████▌  | 380/500 [00:38<00:08, 14.84it/s]
 76%|███████▋  | 382/500 [00:38<00:07, 14.79it/s]
 77%|███████▋  | 384/500 [00:38<00:08, 13.55it/s]
 77%|███████▋  | 386/500 [00:38<00:08, 13.15it/s]
 78%|███████▊  | 388/500 [00:38<00:08, 13.14it/s]
 78%|███████▊  | 390/500 [00:38<00:08, 13.64it/s]
 78%|███████▊  | 392/500 [00:39<00:08, 13.06it/s]
 79%|███████▉  | 394/500 [00:39<00:07, 13.88it/s]
 79%|███████▉  | 396/500 [00:39<00:07, 13.26it/s]
 80%|███████▉  | 398/500 [00:39<00:07, 13.61it/s]
 80%|████████  | 400/500 [00:39<00:07, 13.63it/s]
 80%|████████  | 402/500 [00:39<00:07, 13.55it/s]
 81%|████████  | 404/500 [00:40<00:07, 13.06it/s]
 81%|████████  | 406/500 [00:40<00:07, 13.34it/s]
 82%|████████▏ | 408/500 [00:40<00:06, 13.44it/s]
 82%|████████▏ | 410/500 [00:40<00:06, 14.13it/s]
 82%|████████▏ | 412/500 [00:40<00:05, 14.89it/s]
 83%|████████▎ | 414/500 [00:40<00:05, 15.15it/s]
 83%|████████▎ | 416/500 [00:40<00:05, 15.79it/s]
 84%|████████▎ | 418/500 [00:40<00:05, 14.43it/s]
 84%|████████▍ | 420/500 [00:41<00:05, 14.18it/s]
 84%|████████▍ | 422/500 [00:41<00:05, 14.19it/s]
 85%|████████▍ | 424/500 [00:41<00:05, 13.36it/s]
 85%|████████▌ | 426/500 [00:41<00:05, 14.38it/s]
 86%|████████▌ | 428/500 [00:41<00:05, 14.07it/s]
 86%|████████▌ | 430/500 [00:41<00:04, 14.19it/s]
 86%|████████▋ | 432/500 [00:41<00:04, 13.96it/s]
 87%|████████▋ | 434/500 [00:42<00:04, 13.43it/s]
 87%|████████▋ | 436/500 [00:42<00:04, 13.26it/s]
 88%|████████▊ | 438/500 [00:42<00:04, 13.39it/s]
 88%|████████▊ | 440/500 [00:42<00:04, 13.71it/s]
 88%|████████▊ | 442/500 [00:42<00:04, 14.33it/s]
 89%|████████▉ | 444/500 [00:42<00:03, 14.82it/s]
 89%|████████▉ | 446/500 [00:42<00:03, 13.78it/s]
 90%|████████▉ | 448/500 [00:43<00:03, 14.97it/s]
 90%|█████████ | 450/500 [00:43<00:03, 14.75it/s]
 90%|█████████ | 452/500 [00:43<00:03, 14.73it/s]
 91%|█████████ | 454/500 [00:43<00:03, 14.89it/s]
 91%|█████████ | 456/500 [00:43<00:03, 14.13it/s]
 92%|█████████▏| 458/500 [00:43<00:02, 14.64it/s]
 92%|█████████▏| 460/500 [00:43<00:02, 14.11it/s]
 92%|█████████▏| 462/500 [00:44<00:02, 14.35it/s]
 93%|█████████▎| 464/500 [00:44<00:02, 14.89it/s]
 93%|█████████▎| 466/500 [00:44<00:02, 14.81it/s]
 94%|█████████▎| 468/500 [00:44<00:02, 15.01it/s]
 94%|█████████▍| 470/500 [00:44<00:02, 14.63it/s]
 94%|█████████▍| 472/500 [00:44<00:01, 14.56it/s]
 95%|█████████▍| 474/500 [00:44<00:01, 14.52it/s]
 95%|█████████▌| 476/500 [00:45<00:01, 14.47it/s]
 96%|█████████▌| 478/500 [00:45<00:01, 14.77it/s]
 96%|█████████▌| 480/500 [00:45<00:01, 13.86it/s]
 96%|█████████▋| 482/500 [00:45<00:01, 13.72it/s]
 97%|█████████▋| 484/500 [00:45<00:01, 13.22it/s]
 97%|█████████▋| 486/500 [00:45<00:01, 13.74it/s]
 98%|█████████▊| 488/500 [00:45<00:00, 13.85it/s]
 98%|█████████▊| 490/500 [00:46<00:00, 13.97it/s]
 98%|█████████▊| 492/500 [00:46<00:00, 14.91it/s]
 99%|█████████▉| 494/500 [00:46<00:00, 14.73it/s]
 99%|█████████▉| 496/500 [00:46<00:00, 14.78it/s]
100%|█████████▉| 498/500 [00:46<00:00, 14.98it/s]
100%|██████████| 500/500 [00:46<00:00, 10.71it/s]
 10%|█         | 1/10 [00:46<07:00, 46.74s/it]
  0%|          | 0/500 [00:00<?, ?it/s]
  0%|          | 2/500 [00:00<00:38, 13.04it/s]
  1%|          | 4/500 [00:00<00:39, 12.66it/s]
  1%|          | 6/500 [00:00<00:35, 13.92it/s]
  2%|▏         | 8/500 [00:00<00:35, 13.77it/s]
  2%|▏         | 10/500 [00:00<00:37, 13.19it/s]
  2%|▏         | 12/500 [00:00<00:35, 13.81it/s]
  3%|▎         | 14/500 [00:01<00:36, 13.49it/s]
  3%|▎         | 16/500 [00:01<00:38, 12.71it/s]
  4%|▎         | 18/500 [00:01<00:36, 13.09it/s]
  4%|▍         | 20/500 [00:01<00:37, 12.65it/s]
  4%|▍         | 22/500 [00:01<00:36, 13.04it/s]
  5%|▍         | 24/500 [00:01<00:35, 13.29it/s]
  5%|▌         | 26/500 [00:01<00:34, 13.61it/s]
  6%|▌         | 28/500 [00:02<00:33, 14.19it/s]
  6%|▌         | 30/500 [00:02<00:32, 14.61it/s]
  6%|▋         | 32/500 [00:02<00:33, 14.09it/s]
  7%|▋         | 34/500 [00:02<00:33, 13.74it/s]
  7%|▋         | 36/500 [00:02<00:34, 13.53it/s]
  8%|▊         | 38/500 [00:02<00:34, 13.47it/s]
  8%|▊         | 40/500 [00:02<00:32, 14.08it/s]
  8%|▊         | 42/500 [00:03<00:32, 13.91it/s]
  9%|▉         | 44/500 [00:03<00:32, 13.94it/s]
  9%|▉         | 46/500 [00:03<00:31, 14.38it/s]
 10%|▉         | 48/500 [00:03<00:33, 13.66it/s]
 10%|█         | 50/500 [00:03<00:32, 13.94it/s]
 10%|█         | 52/500 [00:03<00:34, 13.13it/s]
 11%|█         | 54/500 [00:03<00:34, 13.05it/s]
 11%|█         | 56/500 [00:04<00:33, 13.35it/s]
 12%|█▏        | 58/500 [00:04<00:33, 13.31it/s]
 12%|█▏        | 60/500 [00:04<00:32, 13.59it/s]
 12%|█▏        | 62/500 [00:04<00:31, 13.81it/s]
 13%|█▎        | 64/500 [00:04<00:30, 14.11it/s]
 13%|█▎        | 66/500 [00:04<00:30, 14.32it/s]
 14%|█▎        | 68/500 [00:04<00:29, 14.66it/s]
 14%|█▍        | 70/500 [00:05<00:28, 14.89it/s]
 14%|█▍        | 72/500 [00:05<00:27, 15.57it/s]
 15%|█▍        | 74/500 [00:05<00:27, 15.49it/s]
 15%|█▌        | 76/500 [00:05<00:27, 15.39it/s]
 16%|█▌        | 78/500 [00:05<00:30, 13.83it/s]
 16%|█▌        | 80/500 [00:05<00:31, 13.41it/s]
 16%|█▋        | 82/500 [00:05<00:30, 13.91it/s]
 17%|█▋        | 84/500 [00:06<00:29, 14.21it/s]
 17%|█▋        | 86/500 [00:06<00:29, 14.08it/s]
 18%|█▊        | 88/500 [00:06<00:29, 14.09it/s]
 18%|█▊        | 90/500 [00:06<00:28, 14.27it/s]
 18%|█▊        | 92/500 [00:06<00:30, 13.47it/s]
 19%|█▉        | 94/500 [00:06<00:29, 13.64it/s]
 19%|█▉        | 96/500 [00:06<00:30, 13.17it/s]
 20%|█▉        | 98/500 [00:07<00:29, 13.67it/s]
 20%|██        | 100/500 [00:07<00:29, 13.67it/s]
 20%|██        | 102/500 [00:07<00:29, 13.59it/s]
 21%|██        | 104/500 [00:07<00:28, 13.93it/s]
 21%|██        | 106/500 [00:07<00:27, 14.22it/s]
 22%|██▏       | 108/500 [00:07<00:29, 13.51it/s]
 22%|██▏       | 110/500 [00:08<00:30, 12.94it/s]
 22%|██▏       | 112/500 [00:08<00:29, 13.15it/s]
 23%|██▎       | 114/500 [00:08<00:29, 13.05it/s]
 23%|██▎       | 116/500 [00:08<00:29, 13.03it/s]
 24%|██▎       | 118/500 [00:08<00:29, 12.93it/s]
 24%|██▍       | 120/500 [00:08<00:29, 12.93it/s]
 24%|██▍       | 122/500 [00:08<00:29, 12.99it/s]
 25%|██▍       | 124/500 [00:09<00:28, 13.38it/s]
 25%|██▌       | 126/500 [00:09<00:28, 13.28it/s]
 26%|██▌       | 128/500 [00:09<00:26, 13.85it/s]
 26%|██▌       | 130/500 [00:09<00:27, 13.63it/s]
 26%|██▋       | 132/500 [00:09<00:26, 13.65it/s]
 27%|██▋       | 134/500 [00:09<00:27, 13.13it/s]
 27%|██▋       | 136/500 [00:09<00:27, 13.25it/s]
 28%|██▊       | 138/500 [00:10<00:27, 13.03it/s]
 28%|██▊       | 140/500 [00:10<00:25, 13.87it/s]
 28%|██▊       | 142/500 [00:10<00:24, 14.83it/s]
 29%|██▉       | 144/500 [00:10<00:24, 14.36it/s]
 29%|██▉       | 146/500 [00:10<00:23, 14.86it/s]
 30%|██▉       | 148/500 [00:10<00:23, 14.67it/s]
 30%|███       | 150/500 [00:10<00:23, 14.78it/s]
 30%|███       | 152/500 [00:11<00:22, 15.24it/s]
 31%|███       | 154/500 [00:11<00:22, 15.60it/s]
 31%|███       | 156/500 [00:11<00:23, 14.49it/s]
 32%|███▏      | 158/500 [00:11<00:24, 13.97it/s]
 32%|███▏      | 160/500 [00:11<00:24, 13.66it/s]
 32%|███▏      | 162/500 [00:11<00:23, 14.25it/s]
 33%|███▎      | 164/500 [00:11<00:23, 14.50it/s]
 33%|███▎      | 166/500 [00:12<00:23, 14.15it/s]
 34%|███▎      | 168/500 [00:12<00:23, 14.25it/s]
 34%|███▍      | 170/500 [00:12<00:22, 14.73it/s]
 34%|███▍      | 172/500 [00:12<00:23, 13.88it/s]
 35%|███▍      | 174/500 [00:12<00:25, 12.72it/s]
 35%|███▌      | 176/500 [00:12<00:24, 13.40it/s]
 36%|███▌      | 178/500 [00:12<00:25, 12.69it/s]
 36%|███▌      | 180/500 [00:13<00:26, 12.28it/s]
 36%|███▋      | 182/500 [00:13<00:24, 12.80it/s]
 37%|███▋      | 184/500 [00:13<00:24, 12.76it/s]
 37%|███▋      | 186/500 [00:13<00:23, 13.34it/s]
 38%|███▊      | 188/500 [00:13<00:22, 13.94it/s]
 38%|███▊      | 190/500 [00:13<00:22, 13.57it/s]
 38%|███▊      | 192/500 [00:13<00:22, 13.98it/s]
 39%|███▉      | 194/500 [00:14<00:21, 14.02it/s]
 39%|███▉      | 196/500 [00:14<00:22, 13.26it/s]
 40%|███▉      | 198/500 [00:14<00:24, 12.58it/s]
 40%|████      | 200/500 [00:14<00:22, 13.06it/s]
 40%|████      | 202/500 [00:14<00:23, 12.66it/s]
 41%|████      | 204/500 [00:14<00:23, 12.61it/s]
 41%|████      | 206/500 [00:15<00:22, 12.83it/s]
 42%|████▏     | 208/500 [00:15<00:22, 12.86it/s]
 42%|████▏     | 210/500 [00:15<00:22, 12.88it/s]
 42%|████▏     | 212/500 [00:15<00:22, 12.67it/s]
 43%|████▎     | 214/500 [00:15<00:21, 13.08it/s]
 43%|████▎     | 216/500 [00:15<00:21, 13.06it/s]
 44%|████▎     | 218/500 [00:15<00:20, 13.84it/s]
 44%|████▍     | 220/500 [00:16<00:19, 14.05it/s]
 44%|████▍     | 222/500 [00:16<00:20, 13.38it/s]
 45%|████▍     | 224/500 [00:16<00:20, 13.77it/s]
 45%|████▌     | 226/500 [00:16<00:19, 13.84it/s]
 46%|████▌     | 228/500 [00:16<00:18, 14.43it/s]
 46%|████▌     | 230/500 [00:16<00:18, 14.43it/s]
 46%|████▋     | 232/500 [00:16<00:18, 14.61it/s]
 47%|████▋     | 234/500 [00:17<00:20, 13.22it/s]
 47%|████▋     | 236/500 [00:17<00:19, 13.74it/s]
 48%|████▊     | 238/500 [00:17<00:18, 13.99it/s]
 48%|████▊     | 240/500 [00:17<00:18, 14.20it/s]
 48%|████▊     | 242/500 [00:17<00:19, 13.10it/s]
 49%|████▉     | 244/500 [00:17<00:19, 13.41it/s]
 49%|████▉     | 246/500 [00:18<00:19, 12.86it/s]
 50%|████▉     | 248/500 [00:18<00:21, 11.75it/s]
 50%|█████     | 250/500 [00:18<00:22, 11.27it/s]
 50%|█████     | 252/500 [00:18<00:23, 10.62it/s]
 51%|█████     | 254/500 [00:18<00:25,  9.57it/s]
 51%|█████     | 255/500 [00:19<00:26,  9.24it/s]
 51%|█████     | 256/500 [00:19<00:26,  9.20it/s]
 51%|█████▏    | 257/500 [00:19<00:26,  9.28it/s]
 52%|█████▏    | 259/500 [00:19<00:26,  9.06it/s]
 52%|█████▏    | 260/500 [00:19<00:27,  8.73it/s]
 52%|█████▏    | 261/500 [00:19<00:28,  8.44it/s]
 52%|█████▏    | 262/500 [00:19<00:28,  8.23it/s]
 53%|█████▎    | 264/500 [00:20<00:24,  9.73it/s]
 53%|█████▎    | 265/500 [00:20<00:25,  9.23it/s]
 53%|█████▎    | 266/500 [00:20<00:26,  8.71it/s]
 53%|█████▎    | 267/500 [00:20<00:27,  8.41it/s]
 54%|█████▍    | 269/500 [00:20<00:22, 10.24it/s]
 54%|█████▍    | 271/500 [00:20<00:23,  9.79it/s]
 54%|█████▍    | 272/500 [00:20<00:24,  9.13it/s]
 55%|█████▍    | 273/500 [00:21<00:26,  8.60it/s]
 55%|█████▍    | 274/500 [00:21<00:25,  8.83it/s]
 55%|█████▌    | 275/500 [00:21<00:25,  8.87it/s]
 55%|█████▌    | 276/500 [00:21<00:26,  8.61it/s]
 55%|█████▌    | 277/500 [00:21<00:25,  8.61it/s]
 56%|█████▌    | 278/500 [00:21<00:25,  8.60it/s]
 56%|█████▌    | 279/500 [00:21<00:25,  8.68it/s]
 56%|█████▌    | 280/500 [00:21<00:27,  8.02it/s]
 56%|█████▋    | 282/500 [00:22<00:21, 10.02it/s]
 57%|█████▋    | 284/500 [00:22<00:20, 10.53it/s]
 57%|█████▋    | 286/500 [00:22<00:21,  9.95it/s]
 57%|█████▋    | 287/500 [00:22<00:22,  9.41it/s]
 58%|█████▊    | 288/500 [00:22<00:22,  9.26it/s]
 58%|█████▊    | 289/500 [00:22<00:22,  9.34it/s]
 58%|█████▊    | 290/500 [00:22<00:23,  8.96it/s]
 58%|█████▊    | 291/500 [00:23<00:24,  8.66it/s]
 58%|█████▊    | 292/500 [00:23<00:24,  8.36it/s]
 59%|█████▊    | 293/500 [00:23<00:23,  8.74it/s]
 59%|█████▉    | 294/500 [00:23<00:23,  8.75it/s]
 59%|█████▉    | 296/500 [00:23<00:20,  9.99it/s]
 60%|█████▉    | 298/500 [00:23<00:17, 11.46it/s]
 60%|██████    | 300/500 [00:23<00:18, 11.07it/s]
 60%|██████    | 302/500 [00:23<00:15, 12.66it/s]
 61%|██████    | 304/500 [00:24<00:14, 13.15it/s]
 61%|██████    | 306/500 [00:24<00:14, 13.29it/s]
 62%|██████▏   | 308/500 [00:24<00:14, 13.39it/s]
 62%|██████▏   | 310/500 [00:24<00:14, 13.31it/s]
 62%|██████▏   | 312/500 [00:24<00:14, 13.04it/s]
 63%|██████▎   | 314/500 [00:24<00:14, 12.66it/s]
 63%|██████▎   | 316/500 [00:25<00:13, 13.25it/s]
 64%|██████▎   | 318/500 [00:25<00:12, 14.05it/s]
 64%|██████▍   | 320/500 [00:25<00:13, 13.57it/s]
 64%|██████▍   | 322/500 [00:25<00:13, 13.64it/s]
 65%|██████▍   | 324/500 [00:25<00:12, 13.55it/s]
 65%|██████▌   | 326/500 [00:25<00:13, 13.21it/s]
 66%|██████▌   | 328/500 [00:25<00:12, 13.25it/s]
 66%|██████▌   | 330/500 [00:26<00:12, 13.76it/s]
 66%|██████▋   | 332/500 [00:26<00:11, 14.50it/s]
 67%|██████▋   | 334/500 [00:26<00:11, 15.00it/s]
 67%|██████▋   | 336/500 [00:26<00:11, 14.81it/s]
 68%|██████▊   | 338/500 [00:26<00:11, 14.17it/s]
 68%|██████▊   | 340/500 [00:26<00:11, 13.62it/s]
 68%|██████▊   | 342/500 [00:26<00:11, 13.72it/s]
 69%|██████▉   | 344/500 [00:27<00:11, 13.81it/s]
 69%|██████▉   | 346/500 [00:27<00:10, 14.26it/s]
 70%|██████▉   | 348/500 [00:27<00:10, 14.43it/s]
 70%|███████   | 350/500 [00:27<00:10, 14.06it/s]
 70%|███████   | 352/500 [00:27<00:11, 13.18it/s]
 71%|███████   | 354/500 [00:27<00:11, 13.07it/s]
 71%|███████   | 356/500 [00:27<00:11, 12.64it/s]
 72%|███████▏  | 358/500 [00:28<00:11, 12.90it/s]
 72%|███████▏  | 360/500 [00:28<00:10, 12.86it/s]
 72%|███████▏  | 362/500 [00:28<00:10, 13.48it/s]
 73%|███████▎  | 364/500 [00:28<00:10, 13.02it/s]
 73%|███████▎  | 366/500 [00:28<00:10, 13.36it/s]
 74%|███████▎  | 368/500 [00:28<00:09, 14.38it/s]
 74%|███████▍  | 370/500 [00:28<00:09, 13.69it/s]
 74%|███████▍  | 372/500 [00:29<00:09, 13.84it/s]
 75%|███████▍  | 374/500 [00:29<00:09, 13.83it/s]
 75%|███████▌  | 376/500 [00:29<00:08, 14.18it/s]
 76%|███████▌  | 378/500 [00:29<00:08, 13.84it/s]
 76%|███████▌  | 380/500 [00:29<00:08, 13.41it/s]
 76%|███████▋  | 382/500 [00:29<00:08, 13.38it/s]
 77%|███████▋  | 384/500 [00:29<00:08, 14.32it/s]
 77%|███████▋  | 386/500 [00:30<00:07, 14.99it/s]
 78%|███████▊  | 388/500 [00:30<00:07, 14.75it/s]
 78%|███████▊  | 390/500 [00:30<00:07, 13.97it/s]
 78%|███████▊  | 392/500 [00:30<00:07, 14.59it/s]
 79%|███████▉  | 394/500 [00:30<00:07, 14.20it/s]
 79%|███████▉  | 396/500 [00:30<00:07, 14.32it/s]
 80%|███████▉  | 398/500 [00:30<00:07, 14.38it/s]
 80%|████████  | 400/500 [00:31<00:07, 14.06it/s]
 80%|████████  | 402/500 [00:31<00:07, 13.86it/s]
 81%|████████  | 404/500 [00:31<00:06, 13.80it/s]
 81%|████████  | 406/500 [00:31<00:06, 14.12it/s]
 82%|████████▏ | 408/500 [00:31<00:06, 14.39it/s]
 82%|████████▏ | 410/500 [00:31<00:06, 14.44it/s]
 82%|████████▏ | 412/500 [00:31<00:06, 13.16it/s]
 83%|████████▎ | 414/500 [00:32<00:06, 13.30it/s]
 83%|████████▎ | 416/500 [00:32<00:06, 13.84it/s]
 84%|████████▎ | 418/500 [00:32<00:05, 14.17it/s]
 84%|████████▍ | 420/500 [00:32<00:05, 14.18it/s]
 84%|████████▍ | 422/500 [00:32<00:05, 14.30it/s]
 85%|████████▍ | 424/500 [00:32<00:05, 13.53it/s]
 85%|████████▌ | 426/500 [00:32<00:05, 13.18it/s]
 86%|████████▌ | 428/500 [00:33<00:05, 13.61it/s]
 86%|████████▌ | 430/500 [00:33<00:05, 13.76it/s]
 86%|████████▋ | 432/500 [00:33<00:04, 13.98it/s]
 87%|████████▋ | 434/500 [00:33<00:04, 13.39it/s]
 87%|████████▋ | 436/500 [00:33<00:04, 13.48it/s]
 88%|████████▊ | 438/500 [00:33<00:04, 12.91it/s]
 88%|████████▊ | 440/500 [00:34<00:04, 12.97it/s]
 88%|████████▊ | 442/500 [00:34<00:04, 13.01it/s]
 89%|████████▉ | 444/500 [00:34<00:04, 13.11it/s]
 89%|████████▉ | 446/500 [00:34<00:04, 13.36it/s]
 90%|████████▉ | 448/500 [00:34<00:03, 13.71it/s]
 90%|█████████ | 450/500 [00:34<00:03, 14.13it/s]
 90%|█████████ | 452/500 [00:34<00:03, 14.21it/s]
 91%|█████████ | 454/500 [00:34<00:03, 14.27it/s]
 91%|█████████ | 456/500 [00:35<00:03, 14.64it/s]
 92%|█████████▏| 458/500 [00:35<00:02, 14.21it/s]
 92%|█████████▏| 460/500 [00:35<00:02, 13.50it/s]
 92%|█████████▏| 462/500 [00:35<00:02, 12.71it/s]
 93%|█████████▎| 464/500 [00:35<00:02, 13.03it/s]
 93%|█████████▎| 466/500 [00:35<00:02, 13.13it/s]
 94%|█████████▎| 468/500 [00:36<00:02, 13.78it/s]
 94%|█████████▍| 470/500 [00:36<00:02, 13.94it/s]
 94%|█████████▍| 472/500 [00:36<00:01, 14.05it/s]
 95%|█████████▍| 474/500 [00:36<00:01, 14.27it/s]
 95%|█████████▌| 476/500 [00:36<00:01, 14.97it/s]
 96%|█████████▌| 478/500 [00:36<00:01, 14.37it/s]
 96%|█████████▌| 480/500 [00:36<00:01, 13.59it/s]
 96%|█████████▋| 482/500 [00:37<00:01, 13.89it/s]
 97%|█████████▋| 484/500 [00:37<00:01, 14.60it/s]
 97%|█████████▋| 486/500 [00:37<00:01, 13.76it/s]
 98%|█████████▊| 488/500 [00:37<00:00, 13.49it/s]
 98%|█████████▊| 490/500 [00:37<00:00, 13.44it/s]
 98%|█████████▊| 492/500 [00:37<00:00, 13.46it/s]
 99%|█████████▉| 494/500 [00:37<00:00, 13.44it/s]
 99%|█████████▉| 496/500 [00:38<00:00, 14.24it/s]
100%|█████████▉| 498/500 [00:38<00:00, 14.52it/s]
100%|██████████| 500/500 [00:38<00:00, 13.05it/s]
 20%|██        | 2/10 [01:25<05:34, 41.79s/it]
  0%|          | 0/500 [00:00<?, ?it/s]
  0%|          | 2/500 [00:00<00:29, 16.88it/s]
  1%|          | 4/500 [00:00<00:34, 14.39it/s]
  1%|          | 6/500 [00:00<00:34, 14.19it/s]
  2%|▏         | 8/500 [00:00<00:37, 13.18it/s]
  2%|▏         | 10/500 [00:00<00:36, 13.57it/s]
  2%|▏         | 12/500 [00:00<00:34, 14.01it/s]
  3%|▎         | 14/500 [00:00<00:34, 14.13it/s]
  3%|▎         | 16/500 [00:01<00:32, 14.73it/s]
  4%|▎         | 18/500 [00:01<00:34, 14.02it/s]
  4%|▍         | 20/500 [00:01<00:35, 13.35it/s]
  4%|▍         | 22/500 [00:01<00:34, 13.80it/s]
  5%|▍         | 24/500 [00:01<00:33, 14.41it/s]
  5%|▌         | 26/500 [00:01<00:31, 14.88it/s]
  6%|▌         | 28/500 [00:01<00:30, 15.35it/s]
  6%|▌         | 30/500 [00:02<00:29, 16.02it/s]
  6%|▋         | 32/500 [00:02<00:29, 15.89it/s]
  7%|▋         | 34/500 [00:02<00:30, 15.25it/s]
  7%|▋         | 36/500 [00:02<00:31, 14.69it/s]
  8%|▊         | 38/500 [00:02<00:34, 13.30it/s]
  8%|▊         | 40/500 [00:02<00:32, 13.97it/s]
  8%|▊         | 42/500 [00:02<00:32, 14.19it/s]
  9%|▉         | 44/500 [00:03<00:31, 14.52it/s]
  9%|▉         | 46/500 [00:03<00:31, 14.64it/s]
 10%|▉         | 48/500 [00:03<00:31, 14.48it/s]
 10%|█         | 50/500 [00:03<00:31, 14.39it/s]
 10%|█         | 52/500 [00:03<00:31, 14.10it/s]
 11%|█         | 54/500 [00:03<00:31, 14.02it/s]
 11%|█         | 56/500 [00:03<00:31, 14.22it/s]
 12%|█▏        | 58/500 [00:04<00:30, 14.68it/s]
 12%|█▏        | 60/500 [00:04<00:30, 14.35it/s]
 12%|█▏        | 62/500 [00:04<00:29, 14.66it/s]
 13%|█▎        | 64/500 [00:04<00:31, 13.69it/s]
 13%|█▎        | 66/500 [00:04<00:31, 13.84it/s]
 14%|█▎        | 68/500 [00:04<00:30, 14.05it/s]
 14%|█▍        | 70/500 [00:04<00:29, 14.60it/s]
 14%|█▍        | 72/500 [00:04<00:28, 15.16it/s]
 15%|█▍        | 74/500 [00:05<00:27, 15.24it/s]
 15%|█▌        | 76/500 [00:05<00:27, 15.35it/s]
 16%|█▌        | 78/500 [00:05<00:28, 14.91it/s]
 16%|█▌        | 80/500 [00:05<00:27, 15.01it/s]
 16%|█▋        | 82/500 [00:05<00:28, 14.76it/s]
 17%|█▋        | 84/500 [00:05<00:28, 14.79it/s]
 17%|█▋        | 86/500 [00:05<00:26, 15.45it/s]
 18%|█▊        | 88/500 [00:06<00:28, 14.52it/s]
 18%|█▊        | 90/500 [00:06<00:27, 14.69it/s]
 18%|█▊        | 92/500 [00:06<00:28, 14.24it/s]
 19%|█▉        | 94/500 [00:06<00:29, 13.77it/s]
 19%|█▉        | 96/500 [00:06<00:29, 13.81it/s]
 20%|█▉        | 98/500 [00:06<00:28, 13.87it/s]
 20%|██        | 100/500 [00:06<00:29, 13.66it/s]
 20%|██        | 102/500 [00:07<00:28, 14.11it/s]
 21%|██        | 104/500 [00:07<00:29, 13.64it/s]
 21%|██        | 106/500 [00:07<00:30, 12.87it/s]
 22%|██▏       | 108/500 [00:07<00:28, 13.83it/s]
 22%|██▏       | 110/500 [00:07<00:26, 14.46it/s]
 22%|██▏       | 112/500 [00:07<00:27, 13.95it/s]
 23%|██▎       | 114/500 [00:07<00:26, 14.70it/s]
 23%|██▎       | 116/500 [00:08<00:27, 14.01it/s]
 24%|██▎       | 118/500 [00:08<00:28, 13.43it/s]
 24%|██▍       | 120/500 [00:08<00:26, 14.24it/s]
 24%|██▍       | 122/500 [00:08<00:25, 14.74it/s]
 25%|██▍       | 124/500 [00:08<00:25, 14.65it/s]
 25%|██▌       | 126/500 [00:08<00:25, 14.80it/s]
 26%|██▌       | 128/500 [00:08<00:25, 14.59it/s]
 26%|██▌       | 130/500 [00:09<00:25, 14.36it/s]
 26%|██▋       | 132/500 [00:09<00:25, 14.36it/s]
 27%|██▋       | 134/500 [00:09<00:25, 14.24it/s]
 27%|██▋       | 136/500 [00:09<00:26, 13.58it/s]
 28%|██▊       | 138/500 [00:09<00:25, 13.97it/s]
 28%|██▊       | 140/500 [00:09<00:25, 14.25it/s]
 28%|██▊       | 142/500 [00:09<00:24, 14.52it/s]
 29%|██▉       | 144/500 [00:10<00:23, 15.23it/s]
 29%|██▉       | 146/500 [00:10<00:23, 15.17it/s]
 30%|██▉       | 148/500 [00:10<00:23, 14.87it/s]
 30%|███       | 150/500 [00:10<00:24, 14.25it/s]
 30%|███       | 152/500 [00:10<00:24, 14.01it/s]
 31%|███       | 154/500 [00:10<00:24, 14.22it/s]
 31%|███       | 156/500 [00:10<00:24, 13.83it/s]
 32%|███▏      | 158/500 [00:11<00:24, 13.89it/s]
 32%|███▏      | 160/500 [00:11<00:23, 14.27it/s]
 32%|███▏      | 162/500 [00:11<00:23, 14.52it/s]
 33%|███▎      | 164/500 [00:11<00:23, 14.56it/s]
 33%|███▎      | 166/500 [00:11<00:23, 14.45it/s]
 34%|███▎      | 168/500 [00:11<00:23, 14.17it/s]
 34%|███▍      | 170/500 [00:11<00:22, 14.63it/s]
 34%|███▍      | 172/500 [00:11<00:23, 14.19it/s]
 35%|███▍      | 174/500 [00:12<00:22, 14.18it/s]
 35%|███▌      | 176/500 [00:12<00:22, 14.40it/s]
 36%|███▌      | 178/500 [00:12<00:21, 14.69it/s]
 36%|███▌      | 180/500 [00:12<00:21, 14.80it/s]
 36%|███▋      | 182/500 [00:12<00:22, 14.21it/s]
 37%|███▋      | 184/500 [00:12<00:22, 14.00it/s]
 37%|███▋      | 186/500 [00:12<00:22, 13.72it/s]
 38%|███▊      | 188/500 [00:13<00:22, 13.89it/s]
 38%|███▊      | 190/500 [00:13<00:22, 13.83it/s]
 38%|███▊      | 192/500 [00:13<00:22, 13.92it/s]
 39%|███▉      | 194/500 [00:13<00:23, 12.93it/s]
 39%|███▉      | 196/500 [00:13<00:22, 13.56it/s]
 40%|███▉      | 198/500 [00:13<00:21, 13.96it/s]
 40%|████      | 200/500 [00:14<00:21, 13.96it/s]
 40%|████      | 202/500 [00:14<00:20, 14.28it/s]
 41%|████      | 204/500 [00:14<00:20, 14.73it/s]
 41%|████      | 206/500 [00:14<00:20, 14.55it/s]
 42%|████▏     | 208/500 [00:14<00:20, 14.24it/s]
 42%|████▏     | 210/500 [00:14<00:20, 14.48it/s]
 42%|████▏     | 212/500 [00:14<00:19, 14.72it/s]
 43%|████▎     | 214/500 [00:14<00:19, 14.64it/s]
 43%|████▎     | 216/500 [00:15<00:19, 14.86it/s]
 44%|████▎     | 218/500 [00:15<00:18, 15.11it/s]
 44%|████▍     | 220/500 [00:15<00:18, 15.30it/s]
 44%|████▍     | 222/500 [00:15<00:18, 15.11it/s]
 45%|████▍     | 224/500 [00:15<00:19, 14.39it/s]
 45%|████▌     | 226/500 [00:15<00:20, 13.45it/s]
 46%|████▌     | 228/500 [00:15<00:19, 14.27it/s]
 46%|████▌     | 230/500 [00:16<00:18, 14.47it/s]
 46%|████▋     | 232/500 [00:16<00:18, 14.37it/s]
 47%|████▋     | 234/500 [00:16<00:19, 13.82it/s]
 47%|████▋     | 236/500 [00:16<00:18, 14.06it/s]
 48%|████▊     | 238/500 [00:16<00:18, 14.23it/s]
 48%|████▊     | 240/500 [00:16<00:17, 14.53it/s]
 48%|████▊     | 242/500 [00:16<00:18, 14.25it/s]
 49%|████▉     | 244/500 [00:17<00:18, 13.99it/s]
 49%|████▉     | 246/500 [00:17<00:17, 14.35it/s]
 50%|████▉     | 248/500 [00:17<00:17, 14.24it/s]
 50%|█████     | 250/500 [00:17<00:17, 14.70it/s]
 50%|█████     | 252/500 [00:17<00:17, 14.16it/s]
 51%|█████     | 254/500 [00:17<00:16, 14.50it/s]
 51%|█████     | 256/500 [00:17<00:17, 13.85it/s]
 52%|█████▏    | 258/500 [00:18<00:17, 13.99it/s]
 52%|█████▏    | 260/500 [00:18<00:17, 13.90it/s]
 52%|█████▏    | 262/500 [00:18<00:17, 13.41it/s]
 53%|█████▎    | 264/500 [00:18<00:17, 13.75it/s]
 53%|█████▎    | 266/500 [00:18<00:16, 13.90it/s]
 54%|█████▎    | 268/500 [00:18<00:16, 14.34it/s]
 54%|█████▍    | 270/500 [00:18<00:16, 14.33it/s]
 54%|█████▍    | 272/500 [00:19<00:15, 14.36it/s]
 55%|█████▍    | 274/500 [00:19<00:15, 14.65it/s]
 55%|█████▌    | 276/500 [00:19<00:15, 14.52it/s]
 56%|█████▌    | 278/500 [00:19<00:15, 14.63it/s]
 56%|█████▌    | 280/500 [00:19<00:16, 13.40it/s]
 56%|█████▋    | 282/500 [00:19<00:15, 13.73it/s]
 57%|█████▋    | 284/500 [00:19<00:15, 13.79it/s]
 57%|█████▋    | 286/500 [00:20<00:15, 13.70it/s]
 58%|█████▊    | 288/500 [00:20<00:15, 14.13it/s]
 58%|█████▊    | 290/500 [00:20<00:14, 14.63it/s]
 58%|█████▊    | 292/500 [00:20<00:14, 14.64it/s]
 59%|█████▉    | 294/500 [00:20<00:13, 14.82it/s]
 59%|█████▉    | 296/500 [00:20<00:14, 14.44it/s]
 60%|█████▉    | 298/500 [00:20<00:14, 14.41it/s]
 60%|██████    | 300/500 [00:20<00:13, 14.86it/s]
 60%|██████    | 302/500 [00:21<00:13, 14.80it/s]
 61%|██████    | 304/500 [00:21<00:13, 14.26it/s]
 61%|██████    | 306/500 [00:21<00:14, 13.75it/s]
 62%|██████▏   | 308/500 [00:21<00:14, 13.71it/s]
 62%|██████▏   | 310/500 [00:21<00:16, 11.60it/s]
 62%|██████▏   | 312/500 [00:21<00:15, 12.47it/s]
 63%|██████▎   | 314/500 [00:22<00:14, 13.13it/s]
 63%|██████▎   | 316/500 [00:22<00:14, 12.87it/s]
 64%|██████▎   | 318/500 [00:22<00:13, 13.51it/s]
 64%|██████▍   | 320/500 [00:22<00:13, 13.30it/s]
 64%|██████▍   | 322/500 [00:22<00:13, 13.66it/s]
 65%|██████▍   | 324/500 [00:22<00:13, 13.29it/s]
 65%|██████▌   | 326/500 [00:22<00:13, 13.38it/s]
 66%|██████▌   | 328/500 [00:23<00:13, 12.96it/s]
 66%|██████▌   | 330/500 [00:23<00:12, 13.14it/s]
 66%|██████▋   | 332/500 [00:23<00:12, 13.25it/s]
 67%|██████▋   | 334/500 [00:23<00:12, 13.41it/s]
 67%|██████▋   | 336/500 [00:23<00:12, 13.17it/s]
 68%|██████▊   | 338/500 [00:23<00:11, 14.14it/s]
 68%|██████▊   | 340/500 [00:23<00:10, 14.55it/s]
 68%|██████▊   | 342/500 [00:24<00:10, 15.03it/s]
 69%|██████▉   | 344/500 [00:24<00:14, 10.96it/s]
 69%|██████▉   | 346/500 [00:24<00:16,  9.38it/s]
 70%|██████▉   | 348/500 [00:24<00:18,  8.30it/s]
 70%|██████▉   | 349/500 [00:25<00:19,  7.70it/s]
 70%|███████   | 350/500 [00:25<00:19,  7.61it/s]
 70%|███████   | 351/500 [00:25<00:19,  7.84it/s]
 71%|███████   | 353/500 [00:25<00:15,  9.57it/s]
 71%|███████   | 355/500 [00:25<00:12, 11.28it/s]
 71%|███████▏  | 357/500 [00:25<00:11, 12.84it/s]
 72%|███████▏  | 359/500 [00:25<00:10, 13.50it/s]
 72%|███████▏  | 361/500 [00:26<00:10, 13.69it/s]
 73%|███████▎  | 363/500 [00:26<00:09, 13.83it/s]
 73%|███████▎  | 365/500 [00:26<00:09, 14.13it/s]
 73%|███████▎  | 367/500 [00:26<00:09, 14.03it/s]
 74%|███████▍  | 369/500 [00:26<00:09, 14.48it/s]
 74%|███████▍  | 371/500 [00:26<00:09, 14.16it/s]
 75%|███████▍  | 373/500 [00:26<00:08, 14.12it/s]
 75%|███████▌  | 375/500 [00:27<00:08, 14.35it/s]
 75%|███████▌  | 377/500 [00:27<00:08, 13.95it/s]
 76%|███████▌  | 379/500 [00:27<00:08, 14.99it/s]
 76%|███████▌  | 381/500 [00:27<00:07, 14.95it/s]
 77%|███████▋  | 383/500 [00:27<00:08, 13.87it/s]
 77%|███████▋  | 385/500 [00:27<00:08, 13.29it/s]
 77%|███████▋  | 387/500 [00:27<00:08, 13.42it/s]
 78%|███████▊  | 389/500 [00:28<00:08, 13.61it/s]
 78%|███████▊  | 391/500 [00:28<00:08, 13.28it/s]
 79%|███████▊  | 393/500 [00:28<00:07, 13.97it/s]
 79%|███████▉  | 395/500 [00:28<00:07, 14.48it/s]
 79%|███████▉  | 397/500 [00:28<00:07, 14.63it/s]
 80%|███████▉  | 399/500 [00:28<00:06, 15.39it/s]
 80%|████████  | 401/500 [00:28<00:06, 15.25it/s]
 81%|████████  | 403/500 [00:28<00:06, 14.64it/s]
 81%|████████  | 405/500 [00:29<00:06, 13.89it/s]
 81%|████████▏ | 407/500 [00:29<00:06, 14.10it/s]
 82%|████████▏ | 409/500 [00:29<00:06, 13.94it/s]
 82%|████████▏ | 411/500 [00:29<00:06, 13.64it/s]
 83%|████████▎ | 413/500 [00:29<00:05, 14.62it/s]
 83%|████████▎ | 415/500 [00:29<00:05, 14.43it/s]
 83%|████████▎ | 417/500 [00:29<00:05, 14.81it/s]
 84%|████████▍ | 419/500 [00:30<00:05, 14.45it/s]
 84%|████████▍ | 421/500 [00:30<00:05, 13.93it/s]
 85%|████████▍ | 423/500 [00:30<00:05, 14.59it/s]
 85%|████████▌ | 425/500 [00:30<00:05, 14.42it/s]
 85%|████████▌ | 427/500 [00:30<00:04, 14.72it/s]
 86%|████████▌ | 429/500 [00:30<00:04, 15.27it/s]
 86%|████████▌ | 431/500 [00:30<00:04, 14.91it/s]
 87%|████████▋ | 433/500 [00:31<00:04, 15.53it/s]
 87%|████████▋ | 435/500 [00:31<00:04, 15.85it/s]
 87%|████████▋ | 437/500 [00:31<00:04, 15.17it/s]
 88%|████████▊ | 439/500 [00:31<00:04, 14.60it/s]
 88%|████████▊ | 441/500 [00:31<00:04, 13.51it/s]
 89%|████████▊ | 443/500 [00:31<00:03, 14.41it/s]
 89%|████████▉ | 445/500 [00:31<00:03, 14.44it/s]
 89%|████████▉ | 447/500 [00:32<00:03, 14.39it/s]
 90%|████████▉ | 449/500 [00:32<00:03, 14.19it/s]
 90%|█████████ | 451/500 [00:32<00:03, 14.11it/s]
 91%|█████████ | 453/500 [00:32<00:03, 13.92it/s]
 91%|█████████ | 455/500 [00:32<00:03, 13.98it/s]
 91%|█████████▏| 457/500 [00:32<00:02, 14.40it/s]
 92%|█████████▏| 459/500 [00:32<00:02, 14.13it/s]
 92%|█████████▏| 461/500 [00:33<00:02, 14.55it/s]
 93%|█████████▎| 463/500 [00:33<00:02, 14.93it/s]
 93%|█████████▎| 465/500 [00:33<00:02, 14.58it/s]
 93%|█████████▎| 467/500 [00:33<00:02, 13.96it/s]
 94%|█████████▍| 469/500 [00:33<00:02, 12.82it/s]
 94%|█████████▍| 471/500 [00:33<00:02, 12.99it/s]
 95%|█████████▍| 473/500 [00:33<00:01, 13.86it/s]
 95%|█████████▌| 475/500 [00:34<00:01, 14.49it/s]
 95%|█████████▌| 477/500 [00:34<00:01, 14.37it/s]
 96%|█████████▌| 479/500 [00:34<00:01, 14.46it/s]
 96%|█████████▌| 481/500 [00:34<00:01, 15.16it/s]
 97%|█████████▋| 483/500 [00:34<00:01, 14.26it/s]
 97%|█████████▋| 485/500 [00:34<00:01, 14.23it/s]
 97%|█████████▋| 487/500 [00:34<00:00, 14.55it/s]
 98%|█████████▊| 489/500 [00:34<00:00, 14.55it/s]
 98%|█████████▊| 491/500 [00:35<00:00, 14.57it/s]
 99%|█████████▊| 493/500 [00:35<00:00, 14.39it/s]
 99%|█████████▉| 495/500 [00:35<00:00, 13.47it/s]
 99%|█████████▉| 497/500 [00:35<00:00, 14.02it/s]
100%|██████████| 500/500 [00:35<00:00, 13.97it/s]
 30%|███       | 3/10 [02:00<04:33, 39.06s/it]
  0%|          | 0/500 [00:00<?, ?it/s]
  0%|          | 2/500 [00:00<00:34, 14.35it/s]
  1%|          | 4/500 [00:00<00:33, 14.83it/s]
  1%|          | 6/500 [00:00<00:33, 14.89it/s]
  2%|▏         | 8/500 [00:00<00:35, 13.78it/s]
  2%|▏         | 10/500 [00:00<00:38, 12.73it/s]
  2%|▏         | 12/500 [00:00<00:39, 12.36it/s]
  3%|▎         | 14/500 [00:01<00:36, 13.48it/s]
  3%|▎         | 16/500 [00:01<00:37, 12.97it/s]
  4%|▎         | 18/500 [00:01<00:38, 12.56it/s]
  4%|▍         | 20/500 [00:01<00:36, 13.26it/s]
  4%|▍         | 22/500 [00:01<00:35, 13.55it/s]
  5%|▍         | 24/500 [00:01<00:35, 13.57it/s]
  5%|▌         | 26/500 [00:01<00:34, 13.65it/s]
  6%|▌         | 28/500 [00:02<00:32, 14.44it/s]
  6%|▌         | 30/500 [00:02<00:30, 15.20it/s]
  6%|▋         | 32/500 [00:02<00:31, 14.81it/s]
  7%|▋         | 34/500 [00:02<00:30, 15.30it/s]
  7%|▋         | 36/500 [00:02<00:32, 14.46it/s]
  8%|▊         | 38/500 [00:02<00:30, 15.31it/s]
  8%|▊         | 40/500 [00:02<00:30, 15.11it/s]
  8%|▊         | 42/500 [00:02<00:30, 14.99it/s]
  9%|▉         | 44/500 [00:03<00:29, 15.64it/s]
  9%|▉         | 46/500 [00:03<00:28, 15.99it/s]
 10%|▉         | 48/500 [00:03<00:29, 15.49it/s]
 10%|█         | 50/500 [00:03<00:29, 15.10it/s]
 10%|█         | 52/500 [00:03<00:29, 14.96it/s]
 11%|█         | 54/500 [00:03<00:31, 14.07it/s]
 11%|█         | 56/500 [00:03<00:32, 13.61it/s]
 12%|█▏        | 58/500 [00:04<00:32, 13.42it/s]
 12%|█▏        | 60/500 [00:04<00:31, 14.04it/s]
 12%|█▏        | 62/500 [00:04<00:30, 14.31it/s]
 13%|█▎        | 64/500 [00:04<00:30, 14.19it/s]
 13%|█▎        | 66/500 [00:04<00:30, 14.09it/s]
 14%|█▎        | 68/500 [00:04<00:31, 13.93it/s]
 14%|█▍        | 70/500 [00:04<00:31, 13.71it/s]
 14%|█▍        | 72/500 [00:05<00:29, 14.34it/s]
 15%|█▍        | 74/500 [00:05<00:31, 13.73it/s]
 15%|█▌        | 76/500 [00:05<00:30, 13.78it/s]
 16%|█▌        | 78/500 [00:05<00:29, 14.12it/s]
 16%|█▌        | 80/500 [00:05<00:28, 14.84it/s]
 16%|█▋        | 82/500 [00:05<00:27, 15.01it/s]
 17%|█▋        | 84/500 [00:05<00:29, 14.29it/s]
 17%|█▋        | 86/500 [00:06<00:28, 14.30it/s]
 18%|█▊        | 88/500 [00:06<00:28, 14.66it/s]
 18%|█▊        | 90/500 [00:06<00:28, 14.33it/s]
 18%|█▊        | 92/500 [00:06<00:28, 14.34it/s]
 19%|█▉        | 94/500 [00:06<00:29, 13.64it/s]
 19%|█▉        | 96/500 [00:06<00:29, 13.61it/s]
 20%|█▉        | 98/500 [00:06<00:29, 13.70it/s]
 20%|██        | 100/500 [00:07<00:28, 14.18it/s]
 20%|██        | 102/500 [00:07<00:27, 14.61it/s]
 21%|██        | 104/500 [00:07<00:26, 15.03it/s]
 21%|██        | 106/500 [00:07<00:25, 15.47it/s]
 22%|██▏       | 108/500 [00:07<00:26, 15.05it/s]
 22%|██▏       | 110/500 [00:07<00:27, 14.32it/s]
 22%|██▏       | 112/500 [00:07<00:27, 13.97it/s]
 23%|██▎       | 114/500 [00:08<00:30, 12.65it/s]
 23%|██▎       | 116/500 [00:08<00:28, 13.27it/s]
 24%|██▎       | 118/500 [00:08<00:27, 13.93it/s]
 24%|██▍       | 120/500 [00:08<00:27, 13.69it/s]
 24%|██▍       | 122/500 [00:08<00:26, 14.39it/s]
 25%|██▍       | 124/500 [00:08<00:26, 14.17it/s]
 25%|██▌       | 126/500 [00:08<00:26, 14.27it/s]
 26%|██▌       | 128/500 [00:09<00:27, 13.33it/s]
 26%|██▌       | 130/500 [00:09<00:27, 13.28it/s]
 26%|██▋       | 132/500 [00:09<00:26, 13.84it/s]
 27%|██▋       | 134/500 [00:09<00:25, 14.20it/s]
 27%|██▋       | 136/500 [00:09<00:25, 14.28it/s]
 28%|██▊       | 138/500 [00:09<00:24, 14.68it/s]
 28%|██▊       | 140/500 [00:09<00:25, 14.39it/s]
 28%|██▊       | 142/500 [00:10<00:23, 14.92it/s]
 29%|██▉       | 144/500 [00:10<00:25, 14.23it/s]
 29%|██▉       | 146/500 [00:10<00:25, 13.90it/s]
 30%|██▉       | 148/500 [00:10<00:24, 14.17it/s]
 30%|███       | 150/500 [00:10<00:26, 13.39it/s]
 30%|███       | 152/500 [00:10<00:26, 13.36it/s]
 31%|███       | 154/500 [00:10<00:24, 14.34it/s]
 31%|███       | 156/500 [00:10<00:22, 15.18it/s]
 32%|███▏      | 158/500 [00:11<00:22, 15.47it/s]
 32%|███▏      | 160/500 [00:11<00:24, 14.15it/s]
 32%|███▏      | 162/500 [00:11<00:24, 13.98it/s]
 33%|███▎      | 164/500 [00:11<00:24, 13.85it/s]
 33%|███▎      | 166/500 [00:11<00:23, 14.32it/s]
 34%|███▎      | 168/500 [00:11<00:22, 14.72it/s]
 34%|███▍      | 170/500 [00:11<00:21, 15.16it/s]
 34%|███▍      | 172/500 [00:12<00:21, 15.27it/s]
 35%|███▍      | 174/500 [00:12<00:22, 14.19it/s]
 35%|███▌      | 176/500 [00:12<00:23, 13.92it/s]
 36%|███▌      | 178/500 [00:12<00:23, 13.90it/s]
 36%|███▌      | 180/500 [00:12<00:22, 13.93it/s]
 36%|███▋      | 182/500 [00:12<00:22, 14.11it/s]
 37%|███▋      | 184/500 [00:12<00:22, 13.94it/s]
 37%|███▋      | 186/500 [00:13<00:21, 14.30it/s]
 38%|███▊      | 188/500 [00:13<00:22, 13.85it/s]
 38%|███▊      | 190/500 [00:13<00:22, 14.06it/s]
 38%|███▊      | 192/500 [00:13<00:22, 13.77it/s]
 39%|███▉      | 194/500 [00:13<00:21, 13.94it/s]
 39%|███▉      | 196/500 [00:13<00:21, 13.86it/s]
 40%|███▉      | 198/500 [00:13<00:22, 13.54it/s]
 40%|████      | 200/500 [00:14<00:21, 14.06it/s]
 40%|████      | 202/500 [00:14<00:20, 14.36it/s]
 41%|████      | 204/500 [00:14<00:19, 14.82it/s]
 41%|████      | 206/500 [00:14<00:19, 14.83it/s]
 42%|████▏     | 208/500 [00:14<00:19, 15.06it/s]
 42%|████▏     | 210/500 [00:14<00:18, 16.09it/s]
 42%|████▏     | 212/500 [00:14<00:19, 15.06it/s]
 43%|████▎     | 214/500 [00:15<00:19, 14.98it/s]
 43%|████▎     | 216/500 [00:15<00:18, 15.28it/s]
 44%|████▎     | 218/500 [00:15<00:19, 14.72it/s]
 44%|████▍     | 220/500 [00:15<00:19, 14.36it/s]
 44%|████▍     | 222/500 [00:15<00:19, 14.15it/s]
 45%|████▍     | 224/500 [00:15<00:19, 14.17it/s]
 45%|████▌     | 226/500 [00:15<00:20, 13.64it/s]
 46%|████▌     | 228/500 [00:16<00:19, 13.77it/s]
 46%|████▌     | 230/500 [00:16<00:18, 14.50it/s]
 46%|████▋     | 232/500 [00:16<00:18, 14.12it/s]
 47%|████▋     | 234/500 [00:16<00:18, 14.60it/s]
 47%|████▋     | 236/500 [00:16<00:18, 14.48it/s]
 48%|████▊     | 238/500 [00:16<00:18, 14.14it/s]
 48%|████▊     | 240/500 [00:16<00:18, 14.24it/s]
 48%|████▊     | 242/500 [00:17<00:18, 14.30it/s]
 49%|████▉     | 244/500 [00:17<00:18, 13.70it/s]
 49%|████▉     | 246/500 [00:17<00:18, 13.62it/s]
 50%|████▉     | 248/500 [00:17<00:18, 13.79it/s]
 50%|█████     | 250/500 [00:17<00:17, 13.91it/s]
 50%|█████     | 252/500 [00:17<00:18, 13.64it/s]
 51%|█████     | 254/500 [00:17<00:18, 13.43it/s]
 51%|█████     | 256/500 [00:18<00:17, 13.56it/s]
 52%|█████▏    | 258/500 [00:18<00:18, 13.42it/s]
 52%|█████▏    | 260/500 [00:18<00:17, 13.54it/s]
 52%|█████▏    | 262/500 [00:18<00:17, 13.99it/s]
 53%|█████▎    | 264/500 [00:18<00:16, 14.39it/s]
 53%|█████▎    | 266/500 [00:18<00:15, 15.08it/s]
 54%|█████▎    | 268/500 [00:18<00:15, 15.43it/s]
 54%|█████▍    | 270/500 [00:18<00:15, 14.96it/s]
 54%|█████▍    | 272/500 [00:19<00:15, 15.16it/s]
 55%|█████▍    | 274/500 [00:19<00:14, 15.33it/s]
 55%|█████▌    | 276/500 [00:19<00:15, 14.37it/s]
 56%|█████▌    | 278/500 [00:19<00:15, 14.32it/s]
 56%|█████▌    | 280/500 [00:19<00:15, 14.52it/s]
 56%|█████▋    | 282/500 [00:19<00:14, 14.92it/s]
 57%|█████▋    | 284/500 [00:19<00:13, 15.66it/s]
 57%|█████▋    | 286/500 [00:20<00:13, 15.91it/s]
 58%|█████▊    | 288/500 [00:20<00:13, 16.16it/s]
 58%|█████▊    | 290/500 [00:20<00:12, 16.48it/s]
 58%|█████▊    | 292/500 [00:20<00:13, 15.14it/s]
 59%|█████▉    | 294/500 [00:20<00:13, 14.76it/s]
 59%|█████▉    | 296/500 [00:20<00:14, 14.39it/s]
 60%|█████▉    | 298/500 [00:20<00:13, 14.64it/s]
 60%|██████    | 300/500 [00:20<00:13, 15.35it/s]
 60%|██████    | 302/500 [00:21<00:12, 15.50it/s]
 61%|██████    | 304/500 [00:21<00:13, 14.76it/s]
 61%|██████    | 306/500 [00:21<00:13, 14.44it/s]
 62%|██████▏   | 308/500 [00:21<00:13, 13.97it/s]
 62%|██████▏   | 310/500 [00:21<00:13, 14.61it/s]
 62%|██████▏   | 312/500 [00:21<00:13, 14.41it/s]
 63%|██████▎   | 314/500 [00:21<00:13, 14.08it/s]
 63%|██████▎   | 316/500 [00:22<00:13, 14.00it/s]
 64%|██████▎   | 318/500 [00:22<00:12, 14.37it/s]
 64%|██████▍   | 320/500 [00:22<00:12, 14.10it/s]
 64%|██████▍   | 322/500 [00:22<00:13, 13.66it/s]
 65%|██████▍   | 324/500 [00:22<00:13, 13.45it/s]
 65%|██████▌   | 326/500 [00:22<00:13, 13.38it/s]
 66%|██████▌   | 328/500 [00:22<00:12, 13.60it/s]
 66%|██████▌   | 330/500 [00:23<00:12, 13.96it/s]
 66%|██████▋   | 332/500 [00:23<00:11, 14.12it/s]
 67%|██████▋   | 334/500 [00:23<00:11, 14.62it/s]
 67%|██████▋   | 336/500 [00:23<00:11, 14.47it/s]
 68%|██████▊   | 338/500 [00:23<00:11, 14.68it/s]
 68%|██████▊   | 340/500 [00:23<00:10, 15.37it/s]
 68%|██████▊   | 342/500 [00:23<00:10, 14.65it/s]
 69%|██████▉   | 344/500 [00:24<00:10, 14.67it/s]
 69%|██████▉   | 346/500 [00:24<00:10, 14.61it/s]
 70%|██████▉   | 348/500 [00:24<00:10, 13.87it/s]
 70%|███████   | 350/500 [00:24<00:11, 13.19it/s]
 70%|███████   | 352/500 [00:24<00:10, 13.71it/s]
 71%|███████   | 354/500 [00:24<00:10, 14.15it/s]
 71%|███████   | 356/500 [00:24<00:10, 13.57it/s]
 72%|███████▏  | 358/500 [00:25<00:10, 13.99it/s]
 72%|███████▏  | 360/500 [00:25<00:10, 13.86it/s]
 72%|███████▏  | 362/500 [00:25<00:09, 13.85it/s]
 73%|███████▎  | 364/500 [00:25<00:09, 14.35it/s]
 73%|███████▎  | 366/500 [00:25<00:09, 14.14it/s]
 74%|███████▎  | 368/500 [00:25<00:09, 14.29it/s]
 74%|███████▍  | 370/500 [00:25<00:09, 14.09it/s]
 74%|███████▍  | 372/500 [00:26<00:09, 13.76it/s]
 75%|███████▍  | 374/500 [00:26<00:09, 13.03it/s]
 75%|███████▌  | 376/500 [00:26<00:09, 13.37it/s]
 76%|███████▌  | 378/500 [00:26<00:09, 13.41it/s]
 76%|███████▌  | 380/500 [00:26<00:09, 13.16it/s]
 76%|███████▋  | 382/500 [00:26<00:08, 13.49it/s]
 77%|███████▋  | 384/500 [00:26<00:08, 14.19it/s]
 77%|███████▋  | 386/500 [00:27<00:07, 14.54it/s]
 78%|███████▊  | 388/500 [00:27<00:07, 15.13it/s]
 78%|███████▊  | 390/500 [00:27<00:07, 15.61it/s]
 78%|███████▊  | 392/500 [00:27<00:07, 15.28it/s]
 79%|███████▉  | 394/500 [00:27<00:07, 14.06it/s]
 79%|███████▉  | 396/500 [00:27<00:07, 14.15it/s]
 80%|███████▉  | 398/500 [00:27<00:06, 14.78it/s]
 80%|████████  | 400/500 [00:28<00:06, 14.81it/s]
 80%|████████  | 402/500 [00:28<00:06, 15.76it/s]
 81%|████████  | 404/500 [00:28<00:06, 15.78it/s]
 81%|████████  | 406/500 [00:28<00:06, 15.35it/s]
 82%|████████▏ | 408/500 [00:28<00:06, 15.32it/s]
 82%|████████▏ | 410/500 [00:28<00:05, 15.37it/s]
 82%|████████▏ | 412/500 [00:28<00:06, 14.40it/s]
 83%|████████▎ | 414/500 [00:28<00:05, 14.47it/s]
 83%|████████▎ | 416/500 [00:29<00:05, 14.46it/s]
 84%|████████▎ | 418/500 [00:29<00:05, 15.11it/s]
 84%|████████▍ | 420/500 [00:29<00:05, 14.56it/s]
 84%|████████▍ | 422/500 [00:29<00:05, 14.84it/s]
 85%|████████▍ | 424/500 [00:29<00:05, 14.51it/s]
 85%|████████▌ | 426/500 [00:29<00:05, 14.25it/s]
 86%|████████▌ | 428/500 [00:29<00:05, 13.39it/s]
 86%|████████▌ | 430/500 [00:30<00:05, 13.12it/s]
 86%|████████▋ | 432/500 [00:30<00:05, 12.68it/s]
 87%|████████▋ | 434/500 [00:30<00:05, 12.66it/s]
 87%|████████▋ | 436/500 [00:30<00:04, 13.30it/s]
 88%|████████▊ | 438/500 [00:30<00:04, 13.84it/s]
 88%|████████▊ | 440/500 [00:30<00:04, 14.15it/s]
 88%|████████▊ | 442/500 [00:30<00:04, 14.31it/s]
 89%|████████▉ | 444/500 [00:31<00:03, 14.35it/s]
 89%|████████▉ | 446/500 [00:31<00:03, 14.27it/s]
 90%|████████▉ | 448/500 [00:31<00:03, 14.13it/s]
 90%|█████████ | 450/500 [00:31<00:03, 14.30it/s]
 90%|█████████ | 452/500 [00:31<00:03, 14.44it/s]
 91%|█████████ | 454/500 [00:31<00:03, 13.70it/s]
 91%|█████████ | 456/500 [00:31<00:03, 13.83it/s]
 92%|█████████▏| 458/500 [00:32<00:02, 14.44it/s]
 92%|█████████▏| 460/500 [00:32<00:02, 14.38it/s]
 92%|█████████▏| 462/500 [00:32<00:02, 14.51it/s]
 93%|█████████▎| 464/500 [00:32<00:02, 14.25it/s]
 93%|█████████▎| 466/500 [00:32<00:02, 14.05it/s]
 94%|█████████▎| 468/500 [00:32<00:02, 13.90it/s]
 94%|█████████▍| 470/500 [00:32<00:02, 14.46it/s]
 94%|█████████▍| 472/500 [00:33<00:01, 14.94it/s]
 95%|█████████▍| 474/500 [00:33<00:01, 14.74it/s]
 95%|█████████▌| 476/500 [00:33<00:01, 14.87it/s]
 96%|█████████▌| 478/500 [00:33<00:01, 13.96it/s]
 96%|█████████▌| 480/500 [00:33<00:01, 13.98it/s]
 96%|█████████▋| 482/500 [00:33<00:01, 14.12it/s]
 97%|█████████▋| 484/500 [00:33<00:01, 14.38it/s]
 97%|█████████▋| 486/500 [00:34<00:00, 14.48it/s]
 98%|█████████▊| 488/500 [00:34<00:00, 14.21it/s]
 98%|█████████▊| 490/500 [00:34<00:00, 13.75it/s]
 98%|█████████▊| 492/500 [00:34<00:00, 14.30it/s]
 99%|█████████▉| 494/500 [00:34<00:00, 14.14it/s]
 99%|█████████▉| 496/500 [00:34<00:00, 14.52it/s]
100%|█████████▉| 498/500 [00:34<00:00, 14.45it/s]
100%|██████████| 500/500 [00:35<00:00, 14.25it/s]
 40%|████      | 4/10 [02:35<03:45, 37.50s/it]
  0%|          | 0/500 [00:00<?, ?it/s]
  0%|          | 1/500 [00:00<00:50,  9.82it/s]
  1%|          | 3/500 [00:00<00:40, 12.17it/s]
  1%|          | 5/500 [00:00<00:36, 13.55it/s]
  1%|▏         | 7/500 [00:00<00:34, 14.43it/s]
  2%|▏         | 9/500 [00:00<00:35, 13.64it/s]
  2%|▏         | 11/500 [00:00<00:37, 13.05it/s]
  3%|▎         | 13/500 [00:00<00:35, 13.57it/s]
  3%|▎         | 15/500 [00:01<00:35, 13.79it/s]
  3%|▎         | 17/500 [00:01<00:33, 14.58it/s]
  4%|▍         | 19/500 [00:01<00:33, 14.44it/s]
  4%|▍         | 21/500 [00:01<00:32, 14.91it/s]
  5%|▍         | 23/500 [00:01<00:32, 14.79it/s]
  5%|▌         | 25/500 [00:01<00:32, 14.44it/s]
  5%|▌         | 27/500 [00:01<00:32, 14.54it/s]
  6%|▌         | 29/500 [00:02<00:32, 14.71it/s]
  6%|▌         | 31/500 [00:02<00:33, 14.00it/s]
  7%|▋         | 33/500 [00:02<00:31, 14.77it/s]
  7%|▋         | 35/500 [00:02<00:31, 15.00it/s]
  7%|▋         | 37/500 [00:02<00:31, 14.63it/s]
  8%|▊         | 39/500 [00:02<00:31, 14.81it/s]
  8%|▊         | 41/500 [00:02<00:30, 15.21it/s]
  9%|▊         | 43/500 [00:03<00:31, 14.47it/s]
  9%|▉         | 45/500 [00:03<00:31, 14.24it/s]
  9%|▉         | 47/500 [00:03<00:33, 13.35it/s]
 10%|▉         | 49/500 [00:03<00:34, 13.01it/s]
 10%|█         | 51/500 [00:03<00:34, 12.92it/s]
 11%|█         | 53/500 [00:03<00:34, 13.07it/s]
 11%|█         | 55/500 [00:03<00:31, 13.92it/s]
 11%|█▏        | 57/500 [00:04<00:29, 14.86it/s]
 12%|█▏        | 59/500 [00:04<00:29, 14.73it/s]
 12%|█▏        | 61/500 [00:04<00:30, 14.34it/s]
 13%|█▎        | 63/500 [00:04<00:29, 14.92it/s]
 13%|█▎        | 65/500 [00:04<00:29, 14.99it/s]
 13%|█▎        | 67/500 [00:04<00:28, 15.15it/s]
 14%|█▍        | 69/500 [00:04<00:28, 14.96it/s]
 14%|█▍        | 71/500 [00:05<00:31, 13.79it/s]
 15%|█▍        | 73/500 [00:05<00:31, 13.60it/s]
 15%|█▌        | 75/500 [00:05<00:33, 12.87it/s]
 15%|█▌        | 77/500 [00:05<00:30, 13.65it/s]
 16%|█▌        | 79/500 [00:05<00:30, 14.02it/s]
 16%|█▌        | 81/500 [00:05<00:29, 14.33it/s]
 17%|█▋        | 83/500 [00:05<00:28, 14.39it/s]
 17%|█▋        | 85/500 [00:06<00:28, 14.31it/s]
 17%|█▋        | 87/500 [00:06<00:28, 14.41it/s]
 18%|█▊        | 89/500 [00:06<00:28, 14.62it/s]
 18%|█▊        | 91/500 [00:06<00:27, 14.83it/s]
 19%|█▊        | 93/500 [00:06<00:25, 15.89it/s]
 19%|█▉        | 95/500 [00:06<00:26, 15.08it/s]
 19%|█▉        | 97/500 [00:06<00:26, 15.42it/s]
 20%|█▉        | 99/500 [00:06<00:25, 15.58it/s]
 20%|██        | 101/500 [00:07<00:25, 15.53it/s]
 21%|██        | 103/500 [00:07<00:26, 15.14it/s]
 21%|██        | 105/500 [00:07<00:25, 15.37it/s]
 21%|██▏       | 107/500 [00:07<00:25, 15.32it/s]
 22%|██▏       | 109/500 [00:07<00:25, 15.13it/s]
 22%|██▏       | 111/500 [00:07<00:26, 14.88it/s]
 23%|██▎       | 113/500 [00:07<00:25, 15.07it/s]
 23%|██▎       | 115/500 [00:07<00:25, 14.81it/s]
 23%|██▎       | 117/500 [00:08<00:26, 14.62it/s]
 24%|██▍       | 119/500 [00:08<00:27, 13.76it/s]
 24%|██▍       | 121/500 [00:08<00:26, 14.07it/s]
 25%|██▍       | 123/500 [00:08<00:27, 13.88it/s]
 25%|██▌       | 125/500 [00:08<00:27, 13.74it/s]
 25%|██▌       | 127/500 [00:08<00:27, 13.81it/s]
 26%|██▌       | 129/500 [00:08<00:26, 14.10it/s]
 26%|██▌       | 131/500 [00:09<00:28, 12.99it/s]
 27%|██▋       | 133/500 [00:09<00:28, 12.85it/s]
 27%|██▋       | 135/500 [00:09<00:29, 12.39it/s]
 27%|██▋       | 137/500 [00:09<00:27, 12.98it/s]
 28%|██▊       | 139/500 [00:09<00:25, 13.89it/s]
 28%|██▊       | 141/500 [00:09<00:25, 13.91it/s]
 29%|██▊       | 143/500 [00:10<00:25, 13.88it/s]
 29%|██▉       | 145/500 [00:10<00:26, 13.18it/s]
 29%|██▉       | 147/500 [00:10<00:25, 13.90it/s]
 30%|██▉       | 149/500 [00:10<00:24, 14.58it/s]
 30%|███       | 151/500 [00:10<00:22, 15.25it/s]
 31%|███       | 153/500 [00:10<00:22, 15.21it/s]
 31%|███       | 155/500 [00:10<00:21, 15.96it/s]
 31%|███▏      | 157/500 [00:10<00:22, 15.50it/s]
 32%|███▏      | 159/500 [00:11<00:21, 15.71it/s]
 32%|███▏      | 161/500 [00:11<00:23, 14.51it/s]
 33%|███▎      | 163/500 [00:11<00:23, 14.36it/s]
 33%|███▎      | 165/500 [00:11<00:24, 13.68it/s]
 33%|███▎      | 167/500 [00:11<00:24, 13.85it/s]
 34%|███▍      | 169/500 [00:11<00:24, 13.58it/s]
 34%|███▍      | 171/500 [00:12<00:24, 13.67it/s]
 35%|███▍      | 173/500 [00:12<00:24, 13.60it/s]
 35%|███▌      | 175/500 [00:12<00:24, 13.09it/s]
 35%|███▌      | 177/500 [00:12<00:24, 13.44it/s]
 36%|███▌      | 179/500 [00:12<00:24, 13.37it/s]
 36%|███▌      | 181/500 [00:12<00:22, 14.00it/s]
 37%|███▋      | 183/500 [00:12<00:27, 11.71it/s]
 37%|███▋      | 185/500 [00:13<00:25, 12.54it/s]
 37%|███▋      | 187/500 [00:13<00:24, 12.81it/s]
 38%|███▊      | 189/500 [00:13<00:22, 13.75it/s]
 38%|███▊      | 191/500 [00:13<00:22, 13.54it/s]
 39%|███▊      | 193/500 [00:13<00:22, 13.88it/s]
 39%|███▉      | 195/500 [00:13<00:22, 13.56it/s]
 39%|███▉      | 197/500 [00:13<00:22, 13.69it/s]
 40%|███▉      | 199/500 [00:14<00:22, 13.63it/s]
 40%|████      | 201/500 [00:14<00:21, 13.86it/s]
 41%|████      | 203/500 [00:14<00:21, 14.06it/s]
 41%|████      | 205/500 [00:14<00:20, 14.55it/s]
 41%|████▏     | 207/500 [00:14<00:19, 14.89it/s]
 42%|████▏     | 209/500 [00:14<00:19, 14.78it/s]
 42%|████▏     | 211/500 [00:14<00:19, 15.18it/s]
 43%|████▎     | 213/500 [00:15<00:19, 14.87it/s]
 43%|████▎     | 215/500 [00:15<00:19, 14.95it/s]
 43%|████▎     | 217/500 [00:15<00:19, 14.50it/s]
 44%|████▍     | 219/500 [00:15<00:20, 13.76it/s]
 44%|████▍     | 221/500 [00:15<00:19, 14.10it/s]
 45%|████▍     | 223/500 [00:15<00:19, 14.03it/s]
 45%|████▌     | 225/500 [00:15<00:18, 14.50it/s]
 45%|████▌     | 227/500 [00:16<00:18, 14.50it/s]
 46%|████▌     | 229/500 [00:16<00:19, 13.83it/s]
 46%|████▌     | 231/500 [00:16<00:19, 13.87it/s]
 47%|████▋     | 233/500 [00:16<00:19, 14.05it/s]
 47%|████▋     | 235/500 [00:16<00:18, 14.21it/s]
 47%|████▋     | 237/500 [00:16<00:18, 14.58it/s]
 48%|████▊     | 239/500 [00:16<00:18, 14.37it/s]
 48%|████▊     | 241/500 [00:17<00:17, 14.45it/s]
 49%|████▊     | 243/500 [00:17<00:17, 14.87it/s]
 49%|████▉     | 245/500 [00:17<00:17, 14.86it/s]
 49%|████▉     | 247/500 [00:17<00:17, 14.27it/s]
 50%|████▉     | 249/500 [00:17<00:17, 14.54it/s]
 50%|█████     | 251/500 [00:17<00:17, 14.33it/s]
 51%|█████     | 253/500 [00:17<00:17, 14.39it/s]
 51%|█████     | 255/500 [00:17<00:17, 14.34it/s]
 51%|█████▏    | 257/500 [00:18<00:16, 14.58it/s]
 52%|█████▏    | 259/500 [00:18<00:15, 15.12it/s]
 52%|█████▏    | 261/500 [00:18<00:15, 15.55it/s]
 53%|█████▎    | 263/500 [00:18<00:15, 15.27it/s]
 53%|█████▎    | 265/500 [00:18<00:15, 14.75it/s]
 53%|█████▎    | 267/500 [00:18<00:15, 15.09it/s]
 54%|█████▍    | 269/500 [00:18<00:14, 15.67it/s]
 54%|█████▍    | 271/500 [00:18<00:14, 15.99it/s]
 55%|█████▍    | 273/500 [00:19<00:14, 15.68it/s]
 55%|█████▌    | 275/500 [00:19<00:15, 14.80it/s]
 55%|█████▌    | 277/500 [00:19<00:16, 13.34it/s]
 56%|█████▌    | 279/500 [00:19<00:15, 13.96it/s]
 56%|█████▌    | 281/500 [00:19<00:14, 14.98it/s]
 57%|█████▋    | 283/500 [00:19<00:14, 15.47it/s]
 57%|█████▋    | 285/500 [00:19<00:13, 15.56it/s]
 57%|█████▋    | 287/500 [00:20<00:13, 15.50it/s]
 58%|█████▊    | 289/500 [00:20<00:13, 15.57it/s]
 58%|█████▊    | 291/500 [00:20<00:13, 15.11it/s]
 59%|█████▊    | 293/500 [00:20<00:13, 15.14it/s]
 59%|█████▉    | 295/500 [00:20<00:13, 14.71it/s]
 59%|█████▉    | 297/500 [00:20<00:14, 14.28it/s]
 60%|█████▉    | 299/500 [00:20<00:14, 14.14it/s]
 60%|██████    | 301/500 [00:21<00:13, 15.04it/s]
 61%|██████    | 303/500 [00:21<00:12, 15.95it/s]
 61%|██████    | 305/500 [00:21<00:12, 15.69it/s]
 61%|██████▏   | 307/500 [00:21<00:12, 15.34it/s]
 62%|██████▏   | 309/500 [00:21<00:12, 15.22it/s]
 62%|██████▏   | 311/500 [00:21<00:12, 14.93it/s]
 63%|██████▎   | 313/500 [00:21<00:12, 15.14it/s]
 63%|██████▎   | 315/500 [00:21<00:12, 14.66it/s]
 63%|██████▎   | 317/500 [00:22<00:12, 14.86it/s]
 64%|██████▍   | 319/500 [00:22<00:12, 14.64it/s]
 64%|██████▍   | 321/500 [00:22<00:12, 14.32it/s]
 65%|██████▍   | 323/500 [00:22<00:12, 14.08it/s]
 65%|██████▌   | 325/500 [00:22<00:12, 14.44it/s]
 65%|██████▌   | 327/500 [00:22<00:12, 14.23it/s]
 66%|██████▌   | 329/500 [00:22<00:11, 14.36it/s]
 66%|██████▌   | 331/500 [00:23<00:11, 14.28it/s]
 67%|██████▋   | 333/500 [00:23<00:11, 14.39it/s]
 67%|██████▋   | 335/500 [00:23<00:11, 14.40it/s]
 67%|██████▋   | 337/500 [00:23<00:11, 14.07it/s]
 68%|██████▊   | 339/500 [00:23<00:12, 12.54it/s]
 68%|██████▊   | 341/500 [00:23<00:12, 13.00it/s]
 69%|██████▊   | 343/500 [00:23<00:11, 13.59it/s]
 69%|██████▉   | 345/500 [00:24<00:11, 13.66it/s]
 69%|██████▉   | 347/500 [00:24<00:10, 14.05it/s]
 70%|██████▉   | 349/500 [00:24<00:10, 14.85it/s]
 70%|███████   | 351/500 [00:24<00:10, 14.63it/s]
 71%|███████   | 353/500 [00:24<00:10, 14.20it/s]
 71%|███████   | 355/500 [00:24<00:10, 14.05it/s]
 71%|███████▏  | 357/500 [00:24<00:10, 14.01it/s]
 72%|███████▏  | 359/500 [00:25<00:09, 14.11it/s]
 72%|███████▏  | 361/500 [00:25<00:09, 14.20it/s]
 73%|███████▎  | 363/500 [00:25<00:09, 14.66it/s]
 73%|███████▎  | 365/500 [00:25<00:09, 14.89it/s]
 73%|███████▎  | 367/500 [00:25<00:09, 14.22it/s]
 74%|███████▍  | 369/500 [00:25<00:08, 15.01it/s]
 74%|███████▍  | 371/500 [00:25<00:08, 14.77it/s]
 75%|███████▍  | 373/500 [00:26<00:08, 14.64it/s]
 75%|███████▌  | 375/500 [00:26<00:09, 13.80it/s]
 75%|███████▌  | 377/500 [00:26<00:09, 13.19it/s]
 76%|███████▌  | 379/500 [00:26<00:08, 13.92it/s]
 76%|███████▌  | 381/500 [00:26<00:08, 14.36it/s]
 77%|███████▋  | 383/500 [00:26<00:08, 14.20it/s]
 77%|███████▋  | 385/500 [00:26<00:07, 14.86it/s]
 77%|███████▋  | 387/500 [00:27<00:07, 14.51it/s]
 78%|███████▊  | 389/500 [00:27<00:07, 14.88it/s]
 78%|███████▊  | 391/500 [00:27<00:07, 15.06it/s]
 79%|███████▊  | 393/500 [00:27<00:06, 15.56it/s]
 79%|███████▉  | 395/500 [00:27<00:06, 15.16it/s]
 79%|███████▉  | 397/500 [00:27<00:07, 13.92it/s]
 80%|███████▉  | 399/500 [00:27<00:07, 13.71it/s]
 80%|████████  | 401/500 [00:28<00:07, 13.60it/s]
 81%|████████  | 403/500 [00:28<00:06, 13.93it/s]
 81%|████████  | 405/500 [00:28<00:06, 14.08it/s]
 81%|████████▏ | 407/500 [00:28<00:06, 14.29it/s]
 82%|████████▏ | 409/500 [00:28<00:06, 14.12it/s]
 82%|████████▏ | 411/500 [00:28<00:06, 14.72it/s]
 83%|████████▎ | 413/500 [00:28<00:05, 14.58it/s]
 83%|████████▎ | 415/500 [00:28<00:06, 14.13it/s]
 83%|████████▎ | 417/500 [00:29<00:06, 13.53it/s]
 84%|████████▍ | 419/500 [00:29<00:05, 14.24it/s]
 84%|████████▍ | 421/500 [00:29<00:05, 14.07it/s]
 85%|████████▍ | 423/500 [00:29<00:05, 14.45it/s]
 85%|████████▌ | 425/500 [00:29<00:05, 14.45it/s]
 85%|████████▌ | 427/500 [00:29<00:05, 14.12it/s]
 86%|████████▌ | 429/500 [00:29<00:05, 13.87it/s]
 86%|████████▌ | 431/500 [00:30<00:04, 14.07it/s]
 87%|████████▋ | 433/500 [00:30<00:04, 14.23it/s]
 87%|████████▋ | 435/500 [00:30<00:04, 13.93it/s]
 87%|████████▋ | 437/500 [00:30<00:04, 13.85it/s]
 88%|████████▊ | 439/500 [00:30<00:04, 14.41it/s]
 88%|████████▊ | 441/500 [00:30<00:04, 13.64it/s]
 89%|████████▊ | 443/500 [00:31<00:04, 13.10it/s]
 89%|████████▉ | 445/500 [00:31<00:04, 12.79it/s]
 89%|████████▉ | 447/500 [00:31<00:03, 13.43it/s]
 90%|████████▉ | 449/500 [00:31<00:03, 14.42it/s]
 90%|█████████ | 451/500 [00:31<00:03, 13.79it/s]
 91%|█████████ | 453/500 [00:31<00:03, 13.79it/s]
 91%|█████████ | 455/500 [00:31<00:03, 13.23it/s]
 91%|█████████▏| 457/500 [00:32<00:03, 13.71it/s]
 92%|█████████▏| 459/500 [00:32<00:02, 14.16it/s]
 92%|█████████▏| 461/500 [00:32<00:02, 13.50it/s]
 93%|█████████▎| 463/500 [00:32<00:02, 13.97it/s]
 93%|█████████▎| 465/500 [00:32<00:02, 14.51it/s]
 93%|█████████▎| 467/500 [00:32<00:02, 15.15it/s]
 94%|█████████▍| 469/500 [00:32<00:02, 14.23it/s]
 94%|█████████▍| 471/500 [00:33<00:02, 14.06it/s]
 95%|█████████▍| 473/500 [00:33<00:02, 13.22it/s]
 95%|█████████▌| 475/500 [00:33<00:01, 13.60it/s]
 95%|█████████▌| 477/500 [00:33<00:01, 14.23it/s]
 96%|█████████▌| 479/500 [00:33<00:01, 14.94it/s]
 96%|█████████▌| 481/500 [00:33<00:01, 14.62it/s]
 97%|█████████▋| 483/500 [00:33<00:01, 14.61it/s]
 97%|█████████▋| 485/500 [00:33<00:01, 14.64it/s]
 97%|█████████▋| 487/500 [00:34<00:00, 14.25it/s]
 98%|█████████▊| 489/500 [00:34<00:00, 14.76it/s]
 98%|█████████▊| 491/500 [00:34<00:00, 14.92it/s]
 99%|█████████▊| 493/500 [00:34<00:00, 15.38it/s]
 99%|█████████▉| 495/500 [00:34<00:00, 15.02it/s]
 99%|█████████▉| 497/500 [00:34<00:00, 14.94it/s]
100%|██████████| 500/500 [00:35<00:00, 14.28it/s]
 50%|█████     | 5/10 [03:11<03:03, 36.62s/it]
  0%|          | 0/500 [00:00<?, ?it/s]
  0%|          | 2/500 [00:00<00:39, 12.54it/s]
  1%|          | 4/500 [00:00<00:34, 14.53it/s]
  1%|          | 6/500 [00:00<00:33, 14.93it/s]
  2%|▏         | 8/500 [00:00<00:34, 14.16it/s]
  2%|▏         | 10/500 [00:00<00:32, 14.88it/s]
  2%|▏         | 12/500 [00:00<00:34, 14.33it/s]
  3%|▎         | 14/500 [00:00<00:34, 14.08it/s]
  3%|▎         | 16/500 [00:01<00:35, 13.77it/s]
  4%|▎         | 18/500 [00:01<00:34, 14.12it/s]
  4%|▍         | 20/500 [00:01<00:33, 14.42it/s]
  4%|▍         | 22/500 [00:01<00:32, 14.51it/s]
  5%|▍         | 24/500 [00:01<00:32, 14.82it/s]
  5%|▌         | 26/500 [00:01<00:31, 14.94it/s]
  6%|▌         | 28/500 [00:01<00:32, 14.50it/s]
  6%|▌         | 30/500 [00:02<00:32, 14.34it/s]
  6%|▋         | 32/500 [00:02<00:32, 14.29it/s]
  7%|▋         | 34/500 [00:02<00:30, 15.19it/s]
  7%|▋         | 36/500 [00:02<00:31, 14.54it/s]
  8%|▊         | 38/500 [00:02<00:31, 14.45it/s]
  8%|▊         | 40/500 [00:02<00:30, 14.88it/s]
  8%|▊         | 42/500 [00:02<00:31, 14.52it/s]
  9%|▉         | 44/500 [00:03<00:34, 13.39it/s]
  9%|▉         | 46/500 [00:03<00:34, 13.31it/s]
 10%|▉         | 48/500 [00:03<00:32, 13.74it/s]
 10%|█         | 50/500 [00:03<00:32, 13.74it/s]
 10%|█         | 52/500 [00:03<00:37, 11.87it/s]
 11%|█         | 54/500 [00:03<00:38, 11.60it/s]
 11%|█         | 56/500 [00:04<00:43, 10.32it/s]
 12%|█▏        | 58/500 [00:04<00:44, 10.02it/s]
 12%|█▏        | 60/500 [00:04<00:44,  9.82it/s]
 12%|█▏        | 62/500 [00:04<00:48,  9.10it/s]
 13%|█▎        | 64/500 [00:05<00:47,  9.19it/s]
 13%|█▎        | 66/500 [00:05<00:46,  9.41it/s]
 14%|█▎        | 68/500 [00:05<00:44,  9.72it/s]
 14%|█▍        | 69/500 [00:05<00:46,  9.29it/s]
 14%|█▍        | 71/500 [00:05<00:45,  9.36it/s]
 14%|█▍        | 72/500 [00:05<00:45,  9.37it/s]
 15%|█▍        | 74/500 [00:06<00:41, 10.35it/s]
 15%|█▌        | 76/500 [00:06<00:38, 10.98it/s]
 16%|█▌        | 78/500 [00:06<00:38, 11.02it/s]
 16%|█▌        | 80/500 [00:06<00:39, 10.62it/s]
 16%|█▋        | 82/500 [00:06<00:39, 10.66it/s]
 17%|█▋        | 84/500 [00:06<00:36, 11.48it/s]
 17%|█▋        | 86/500 [00:07<00:39, 10.42it/s]
 18%|█▊        | 88/500 [00:07<00:38, 10.59it/s]
 18%|█▊        | 90/500 [00:07<00:43,  9.53it/s]
 18%|█▊        | 91/500 [00:07<00:44,  9.25it/s]
 18%|█▊        | 92/500 [00:07<00:44,  9.14it/s]
 19%|█▊        | 93/500 [00:07<00:44,  9.11it/s]
 19%|█▉        | 94/500 [00:08<00:46,  8.73it/s]
 19%|█▉        | 95/500 [00:08<00:45,  8.96it/s]
 19%|█▉        | 96/500 [00:08<00:47,  8.43it/s]
 19%|█▉        | 97/500 [00:08<00:47,  8.40it/s]
 20%|█▉        | 99/500 [00:08<00:39, 10.10it/s]
 20%|██        | 100/500 [00:08<00:44,  9.08it/s]
 20%|██        | 101/500 [00:08<00:46,  8.55it/s]
 21%|██        | 103/500 [00:09<00:40,  9.82it/s]
 21%|██        | 104/500 [00:09<00:42,  9.35it/s]
 21%|██        | 105/500 [00:09<00:42,  9.30it/s]
 21%|██        | 106/500 [00:09<00:44,  8.76it/s]
 22%|██▏       | 108/500 [00:09<00:36, 10.74it/s]
 22%|██▏       | 110/500 [00:09<00:33, 11.66it/s]
 22%|██▏       | 112/500 [00:09<00:30, 12.55it/s]
 23%|██▎       | 114/500 [00:09<00:31, 12.39it/s]
 23%|██▎       | 116/500 [00:10<00:29, 13.06it/s]
 24%|██▎       | 118/500 [00:10<00:29, 13.04it/s]
 24%|██▍       | 120/500 [00:10<00:29, 13.00it/s]
 24%|██▍       | 122/500 [00:10<00:27, 13.88it/s]
 25%|██▍       | 124/500 [00:10<00:27, 13.89it/s]
 25%|██▌       | 126/500 [00:10<00:25, 14.85it/s]
 26%|██▌       | 128/500 [00:10<00:26, 14.12it/s]
 26%|██▌       | 130/500 [00:11<00:25, 14.36it/s]
 26%|██▋       | 132/500 [00:11<00:25, 14.53it/s]
 27%|██▋       | 134/500 [00:11<00:25, 14.29it/s]
 27%|██▋       | 136/500 [00:11<00:26, 13.81it/s]
 28%|██▊       | 138/500 [00:11<00:24, 14.62it/s]
 28%|██▊       | 140/500 [00:11<00:24, 14.78it/s]
 28%|██▊       | 142/500 [00:11<00:24, 14.64it/s]
 29%|██▉       | 144/500 [00:12<00:23, 15.06it/s]
 29%|██▉       | 146/500 [00:12<00:23, 15.27it/s]
 30%|██▉       | 148/500 [00:12<00:23, 14.73it/s]
 30%|███       | 150/500 [00:12<00:25, 13.70it/s]
 30%|███       | 152/500 [00:12<00:25, 13.83it/s]
 31%|███       | 154/500 [00:12<00:25, 13.79it/s]
 31%|███       | 156/500 [00:12<00:24, 13.83it/s]
 32%|███▏      | 158/500 [00:13<00:25, 13.32it/s]
 32%|███▏      | 160/500 [00:13<00:25, 13.37it/s]
 32%|███▏      | 162/500 [00:13<00:24, 13.57it/s]
 33%|███▎      | 164/500 [00:13<00:25, 13.22it/s]
 33%|███▎      | 166/500 [00:13<00:25, 13.29it/s]
 34%|███▎      | 168/500 [00:13<00:25, 13.28it/s]
 34%|███▍      | 170/500 [00:13<00:24, 13.73it/s]
 34%|███▍      | 172/500 [00:14<00:23, 14.00it/s]
 35%|███▍      | 174/500 [00:14<00:23, 14.00it/s]
 35%|███▌      | 176/500 [00:14<00:23, 13.76it/s]
 36%|███▌      | 178/500 [00:14<00:24, 13.25it/s]
 36%|███▌      | 180/500 [00:14<00:23, 13.44it/s]
 36%|███▋      | 182/500 [00:14<00:24, 12.80it/s]
 37%|███▋      | 184/500 [00:15<00:24, 13.01it/s]
 37%|███▋      | 186/500 [00:15<00:23, 13.61it/s]
 38%|███▊      | 188/500 [00:15<00:23, 13.12it/s]
 38%|███▊      | 190/500 [00:15<00:22, 13.73it/s]
 38%|███▊      | 192/500 [00:15<00:23, 13.12it/s]
 39%|███▉      | 194/500 [00:15<00:23, 13.14it/s]
 39%|███▉      | 196/500 [00:15<00:21, 13.95it/s]
 40%|███▉      | 198/500 [00:16<00:20, 14.56it/s]
 40%|████      | 200/500 [00:16<00:20, 14.76it/s]
 40%|████      | 202/500 [00:16<00:20, 14.46it/s]
 41%|████      | 204/500 [00:16<00:20, 14.15it/s]
 41%|████      | 206/500 [00:16<00:21, 13.70it/s]
 42%|████▏     | 208/500 [00:16<00:21, 13.71it/s]
 42%|████▏     | 210/500 [00:16<00:21, 13.68it/s]
 42%|████▏     | 212/500 [00:17<00:20, 14.18it/s]
 43%|████▎     | 214/500 [00:17<00:19, 14.47it/s]
 43%|████▎     | 216/500 [00:17<00:20, 14.14it/s]
 44%|████▎     | 218/500 [00:17<00:19, 14.21it/s]
 44%|████▍     | 220/500 [00:17<00:21, 13.01it/s]
 44%|████▍     | 222/500 [00:17<00:21, 13.04it/s]
 45%|████▍     | 224/500 [00:17<00:20, 13.79it/s]
 45%|████▌     | 226/500 [00:18<00:20, 13.53it/s]
 46%|████▌     | 228/500 [00:18<00:21, 12.69it/s]
 46%|████▌     | 230/500 [00:18<00:21, 12.72it/s]
 46%|████▋     | 232/500 [00:18<00:19, 13.78it/s]
 47%|████▋     | 234/500 [00:18<00:19, 13.95it/s]
 47%|████▋     | 236/500 [00:18<00:18, 14.05it/s]
 48%|████▊     | 238/500 [00:18<00:18, 14.19it/s]
 48%|████▊     | 240/500 [00:19<00:18, 13.78it/s]
 48%|████▊     | 242/500 [00:19<00:21, 12.11it/s]
 49%|████▉     | 244/500 [00:19<00:19, 12.93it/s]
 49%|████▉     | 246/500 [00:19<00:18, 13.82it/s]
 50%|████▉     | 248/500 [00:19<00:18, 13.47it/s]
 50%|█████     | 250/500 [00:19<00:18, 13.59it/s]
 50%|█████     | 252/500 [00:19<00:18, 13.47it/s]
 51%|█████     | 254/500 [00:20<00:18, 13.20it/s]
 51%|█████     | 256/500 [00:20<00:18, 13.17it/s]
 52%|█████▏    | 258/500 [00:20<00:18, 13.01it/s]
 52%|█████▏    | 260/500 [00:20<00:18, 13.00it/s]
 52%|█████▏    | 262/500 [00:20<00:18, 12.99it/s]
 53%|█████▎    | 264/500 [00:20<00:18, 13.07it/s]
 53%|█████▎    | 266/500 [00:21<00:18, 12.75it/s]
 54%|█████▎    | 268/500 [00:21<00:17, 13.46it/s]
 54%|█████▍    | 270/500 [00:21<00:16, 13.87it/s]
 54%|█████▍    | 272/500 [00:21<00:16, 14.05it/s]
 55%|█████▍    | 274/500 [00:21<00:15, 14.62it/s]
 55%|█████▌    | 276/500 [00:21<00:15, 14.27it/s]
 56%|█████▌    | 278/500 [00:21<00:16, 13.25it/s]
 56%|█████▌    | 280/500 [00:22<00:16, 13.74it/s]
 56%|█████▋    | 282/500 [00:22<00:15, 14.40it/s]
 57%|█████▋    | 284/500 [00:22<00:15, 13.89it/s]
 57%|█████▋    | 286/500 [00:22<00:15, 13.80it/s]
 58%|█████▊    | 288/500 [00:22<00:15, 13.90it/s]
 58%|█████▊    | 290/500 [00:22<00:16, 12.63it/s]
 58%|█████▊    | 292/500 [00:22<00:16, 12.76it/s]
 59%|█████▉    | 294/500 [00:23<00:15, 13.53it/s]
 59%|█████▉    | 296/500 [00:23<00:14, 13.79it/s]
 60%|█████▉    | 298/500 [00:23<00:14, 13.97it/s]
 60%|██████    | 300/500 [00:23<00:14, 13.65it/s]
 60%|██████    | 302/500 [00:23<00:14, 13.98it/s]
 61%|██████    | 304/500 [00:23<00:14, 13.75it/s]
 61%|██████    | 306/500 [00:23<00:14, 13.56it/s]
 62%|██████▏   | 308/500 [00:24<00:13, 13.84it/s]
 62%|██████▏   | 310/500 [00:24<00:13, 14.39it/s]
 62%|██████▏   | 312/500 [00:24<00:13, 14.41it/s]
 63%|██████▎   | 314/500 [00:24<00:12, 14.39it/s]
 63%|██████▎   | 316/500 [00:24<00:13, 13.89it/s]
 64%|██████▎   | 318/500 [00:24<00:12, 14.00it/s]
 64%|██████▍   | 320/500 [00:24<00:12, 13.87it/s]
 64%|██████▍   | 322/500 [00:25<00:12, 14.59it/s]
 65%|██████▍   | 324/500 [00:25<00:17, 10.29it/s]
 65%|██████▌   | 326/500 [00:25<00:19,  9.06it/s]
 66%|██████▌   | 328/500 [00:26<00:22,  7.81it/s]
 66%|██████▌   | 329/500 [00:26<00:23,  7.30it/s]
 66%|██████▌   | 330/500 [00:26<00:24,  7.01it/s]
 66%|██████▋   | 332/500 [00:26<00:19,  8.61it/s]
 67%|██████▋   | 334/500 [00:26<00:17,  9.70it/s]
 67%|██████▋   | 336/500 [00:26<00:16, 10.10it/s]
 68%|██████▊   | 338/500 [00:27<00:15, 10.24it/s]
 68%|██████▊   | 340/500 [00:27<00:14, 11.42it/s]
 68%|██████▊   | 342/500 [00:27<00:12, 12.55it/s]
 69%|██████▉   | 344/500 [00:27<00:12, 12.64it/s]
 69%|██████▉   | 346/500 [00:27<00:11, 13.12it/s]
 70%|██████▉   | 348/500 [00:27<00:10, 13.88it/s]
 70%|███████   | 350/500 [00:27<00:10, 14.24it/s]
 70%|███████   | 352/500 [00:28<00:10, 13.81it/s]
 71%|███████   | 354/500 [00:28<00:10, 13.99it/s]
 71%|███████   | 356/500 [00:28<00:10, 14.27it/s]
 72%|███████▏  | 358/500 [00:28<00:09, 14.49it/s]
 72%|███████▏  | 360/500 [00:28<00:10, 13.93it/s]
 72%|███████▏  | 362/500 [00:28<00:09, 14.18it/s]
 73%|███████▎  | 364/500 [00:28<00:09, 14.90it/s]
 73%|███████▎  | 366/500 [00:28<00:09, 13.71it/s]
 74%|███████▎  | 368/500 [00:29<00:09, 13.71it/s]
 74%|███████▍  | 370/500 [00:29<00:09, 13.79it/s]
 74%|███████▍  | 372/500 [00:29<00:09, 13.57it/s]
 75%|███████▍  | 374/500 [00:29<00:09, 13.23it/s]
 75%|███████▌  | 376/500 [00:29<00:09, 12.58it/s]
 76%|███████▌  | 378/500 [00:29<00:09, 12.96it/s]
 76%|███████▌  | 380/500 [00:30<00:09, 12.80it/s]
 76%|███████▋  | 382/500 [00:30<00:08, 13.57it/s]
 77%|███████▋  | 384/500 [00:30<00:09, 12.64it/s]
 77%|███████▋  | 386/500 [00:30<00:09, 12.53it/s]
 78%|███████▊  | 388/500 [00:30<00:08, 13.25it/s]
 78%|███████▊  | 390/500 [00:30<00:08, 13.44it/s]
 78%|███████▊  | 392/500 [00:30<00:07, 14.42it/s]
 79%|███████▉  | 394/500 [00:31<00:07, 13.45it/s]
 79%|███████▉  | 396/500 [00:31<00:07, 13.59it/s]
 80%|███████▉  | 398/500 [00:31<00:07, 13.87it/s]
 80%|████████  | 400/500 [00:31<00:07, 13.93it/s]
 80%|████████  | 402/500 [00:31<00:07, 13.81it/s]
 81%|████████  | 404/500 [00:31<00:06, 14.15it/s]
 81%|████████  | 406/500 [00:31<00:06, 14.40it/s]
 82%|████████▏ | 408/500 [00:32<00:06, 14.77it/s]
 82%|████████▏ | 410/500 [00:32<00:06, 13.89it/s]
 82%|████████▏ | 412/500 [00:32<00:06, 13.48it/s]
 83%|████████▎ | 414/500 [00:32<00:05, 14.44it/s]
 83%|████████▎ | 416/500 [00:32<00:05, 14.54it/s]
 84%|████████▎ | 418/500 [00:32<00:05, 14.70it/s]
 84%|████████▍ | 420/500 [00:32<00:05, 14.68it/s]
 84%|████████▍ | 422/500 [00:33<00:05, 14.49it/s]
 85%|████████▍ | 424/500 [00:33<00:05, 13.62it/s]
 85%|████████▌ | 426/500 [00:33<00:05, 13.58it/s]
 86%|████████▌ | 428/500 [00:33<00:05, 13.15it/s]
 86%|████████▌ | 430/500 [00:33<00:05, 13.00it/s]
 86%|████████▋ | 432/500 [00:33<00:05, 13.46it/s]
 87%|████████▋ | 434/500 [00:33<00:04, 13.93it/s]
 87%|████████▋ | 436/500 [00:34<00:04, 13.72it/s]
 88%|████████▊ | 438/500 [00:34<00:04, 13.04it/s]
 88%|████████▊ | 440/500 [00:34<00:04, 13.30it/s]
 88%|████████▊ | 442/500 [00:34<00:04, 13.54it/s]
 89%|████████▉ | 444/500 [00:34<00:03, 14.42it/s]
 89%|████████▉ | 446/500 [00:34<00:03, 14.73it/s]
 90%|████████▉ | 448/500 [00:34<00:03, 14.61it/s]
 90%|█████████ | 450/500 [00:35<00:03, 13.29it/s]
 90%|█████████ | 452/500 [00:35<00:03, 13.38it/s]
 91%|█████████ | 454/500 [00:35<00:03, 13.60it/s]
 91%|█████████ | 456/500 [00:35<00:03, 13.75it/s]
 92%|█████████▏| 458/500 [00:35<00:03, 13.60it/s]
 92%|█████████▏| 460/500 [00:35<00:03, 13.25it/s]
 92%|█████████▏| 462/500 [00:36<00:02, 13.81it/s]
 93%|█████████▎| 464/500 [00:36<00:02, 13.11it/s]
 93%|█████████▎| 466/500 [00:36<00:02, 13.15it/s]
 94%|█████████▎| 468/500 [00:36<00:02, 13.01it/s]
 94%|█████████▍| 470/500 [00:36<00:02, 13.17it/s]
 94%|█████████▍| 472/500 [00:36<00:02, 13.38it/s]
 95%|█████████▍| 474/500 [00:36<00:01, 13.18it/s]
 95%|█████████▌| 476/500 [00:37<00:01, 13.09it/s]
 96%|█████████▌| 478/500 [00:37<00:01, 12.81it/s]
 96%|█████████▌| 480/500 [00:37<00:01, 12.35it/s]
 96%|█████████▋| 482/500 [00:37<00:01, 12.69it/s]
 97%|█████████▋| 484/500 [00:37<00:01, 12.80it/s]
 97%|█████████▋| 486/500 [00:37<00:01, 13.44it/s]
 98%|█████████▊| 488/500 [00:38<00:00, 13.52it/s]
 98%|█████████▊| 490/500 [00:38<00:00, 12.61it/s]
 98%|█████████▊| 492/500 [00:38<00:00, 13.08it/s]
 99%|█████████▉| 494/500 [00:38<00:00, 13.28it/s]
 99%|█████████▉| 496/500 [00:38<00:00, 13.80it/s]
100%|█████████▉| 498/500 [00:38<00:00, 14.22it/s]
100%|██████████| 500/500 [00:38<00:00, 12.86it/s]
 60%|██████    | 6/10 [03:49<02:29, 37.40s/it]
  0%|          | 0/500 [00:00<?, ?it/s]
  0%|          | 2/500 [00:00<00:40, 12.17it/s]
  1%|          | 4/500 [00:00<00:38, 13.03it/s]
  1%|          | 6/500 [00:00<00:36, 13.56it/s]
  2%|▏         | 8/500 [00:00<00:34, 14.31it/s]
  2%|▏         | 10/500 [00:00<00:34, 14.31it/s]
  2%|▏         | 12/500 [00:00<00:36, 13.28it/s]
  3%|▎         | 14/500 [00:01<00:34, 14.24it/s]
  3%|▎         | 16/500 [00:01<00:32, 14.72it/s]
  4%|▎         | 18/500 [00:01<00:32, 14.89it/s]
  4%|▍         | 20/500 [00:01<00:34, 13.88it/s]
  4%|▍         | 22/500 [00:01<00:34, 13.96it/s]
  5%|▍         | 24/500 [00:01<00:36, 12.97it/s]
  5%|▌         | 26/500 [00:01<00:37, 12.67it/s]
  6%|▌         | 28/500 [00:02<00:36, 12.99it/s]
  6%|▌         | 30/500 [00:02<00:34, 13.78it/s]
  6%|▋         | 32/500 [00:02<00:33, 13.88it/s]
  7%|▋         | 34/500 [00:02<00:33, 13.82it/s]
  7%|▋         | 36/500 [00:02<00:32, 14.10it/s]
  8%|▊         | 38/500 [00:02<00:33, 13.73it/s]
  8%|▊         | 40/500 [00:02<00:31, 14.46it/s]
  8%|▊         | 42/500 [00:03<00:30, 15.18it/s]
  9%|▉         | 44/500 [00:03<00:29, 15.46it/s]
  9%|▉         | 46/500 [00:03<00:28, 15.75it/s]
 10%|▉         | 48/500 [00:03<00:30, 14.99it/s]
 10%|█         | 50/500 [00:03<00:29, 15.48it/s]
 10%|█         | 52/500 [00:03<00:29, 15.20it/s]
 11%|█         | 54/500 [00:03<00:31, 14.33it/s]
 11%|█         | 56/500 [00:03<00:30, 14.60it/s]
 12%|█▏        | 58/500 [00:04<00:29, 15.05it/s]
 12%|█▏        | 60/500 [00:04<00:30, 14.44it/s]
 12%|█▏        | 62/500 [00:04<00:29, 14.88it/s]
 13%|█▎        | 64/500 [00:04<00:30, 14.49it/s]
 13%|█▎        | 66/500 [00:04<00:33, 13.09it/s]
 14%|█▎        | 68/500 [00:04<00:32, 13.42it/s]
 14%|█▍        | 70/500 [00:04<00:30, 14.21it/s]
 14%|█▍        | 72/500 [00:05<00:28, 14.84it/s]
 15%|█▍        | 74/500 [00:05<00:28, 14.74it/s]
 15%|█▌        | 76/500 [00:05<00:28, 14.64it/s]
 16%|█▌        | 78/500 [00:05<00:28, 14.83it/s]
 16%|█▌        | 80/500 [00:05<00:30, 13.63it/s]
 16%|█▋        | 82/500 [00:05<00:29, 14.00it/s]
 17%|█▋        | 84/500 [00:05<00:28, 14.61it/s]
 17%|█▋        | 86/500 [00:06<00:28, 14.51it/s]
 18%|█▊        | 88/500 [00:06<00:28, 14.56it/s]
 18%|█▊        | 90/500 [00:06<00:28, 14.52it/s]
 18%|█▊        | 92/500 [00:06<00:26, 15.27it/s]
 19%|█▉        | 94/500 [00:06<00:28, 14.47it/s]
 19%|█▉        | 96/500 [00:06<00:27, 14.93it/s]
 20%|█▉        | 98/500 [00:06<00:26, 15.14it/s]
 20%|██        | 100/500 [00:06<00:26, 15.33it/s]
 20%|██        | 102/500 [00:07<00:25, 15.65it/s]
 21%|██        | 104/500 [00:07<00:26, 15.08it/s]
 21%|██        | 106/500 [00:07<00:25, 15.21it/s]
 22%|██▏       | 108/500 [00:07<00:25, 15.61it/s]
 22%|██▏       | 110/500 [00:07<00:26, 14.47it/s]
 22%|██▏       | 112/500 [00:07<00:26, 14.81it/s]
 23%|██▎       | 114/500 [00:07<00:24, 15.46it/s]
 23%|██▎       | 116/500 [00:08<00:25, 14.81it/s]
 24%|██▎       | 118/500 [00:08<00:25, 15.05it/s]
 24%|██▍       | 120/500 [00:08<00:24, 15.49it/s]
 24%|██▍       | 122/500 [00:08<00:24, 15.28it/s]
 25%|██▍       | 124/500 [00:08<00:27, 13.84it/s]
 25%|██▌       | 126/500 [00:08<00:26, 14.24it/s]
 26%|██▌       | 128/500 [00:08<00:25, 14.71it/s]
 26%|██▌       | 130/500 [00:08<00:25, 14.72it/s]
 26%|██▋       | 132/500 [00:09<00:23, 15.41it/s]
 27%|██▋       | 134/500 [00:09<00:24, 15.06it/s]
 27%|██▋       | 136/500 [00:09<00:25, 14.43it/s]
 28%|██▊       | 138/500 [00:09<00:24, 14.66it/s]
 28%|██▊       | 140/500 [00:09<00:24, 14.92it/s]
 28%|██▊       | 142/500 [00:09<00:24, 14.33it/s]
 29%|██▉       | 144/500 [00:09<00:25, 13.87it/s]
 29%|██▉       | 146/500 [00:10<00:24, 14.54it/s]
 30%|██▉       | 148/500 [00:10<00:25, 14.07it/s]
 30%|███       | 150/500 [00:10<00:24, 14.53it/s]
 30%|███       | 152/500 [00:10<00:22, 15.15it/s]
 31%|███       | 154/500 [00:10<00:22, 15.50it/s]
 31%|███       | 156/500 [00:10<00:23, 14.94it/s]
 32%|███▏      | 158/500 [00:10<00:23, 14.59it/s]
 32%|███▏      | 160/500 [00:11<00:22, 14.80it/s]
 32%|███▏      | 162/500 [00:11<00:22, 15.04it/s]
 33%|███▎      | 164/500 [00:11<00:22, 15.02it/s]
 33%|███▎      | 166/500 [00:11<00:21, 15.34it/s]
 34%|███▎      | 168/500 [00:11<00:22, 14.96it/s]
 34%|███▍      | 170/500 [00:11<00:22, 14.36it/s]
 34%|███▍      | 172/500 [00:11<00:22, 14.48it/s]
 35%|███▍      | 174/500 [00:11<00:22, 14.62it/s]
 35%|███▌      | 176/500 [00:12<00:21, 15.18it/s]
 36%|███▌      | 178/500 [00:12<00:21, 14.74it/s]
 36%|███▌      | 180/500 [00:12<00:21, 14.59it/s]
 36%|███▋      | 182/500 [00:12<00:21, 15.04it/s]
 37%|███▋      | 184/500 [00:12<00:20, 15.07it/s]
 37%|███▋      | 186/500 [00:12<00:20, 15.33it/s]
 38%|███▊      | 188/500 [00:12<00:19, 15.71it/s]
 38%|███▊      | 190/500 [00:13<00:21, 14.71it/s]
 38%|███▊      | 192/500 [00:13<00:21, 14.65it/s]
 39%|███▉      | 194/500 [00:13<00:20, 15.19it/s]
 39%|███▉      | 196/500 [00:13<00:21, 14.36it/s]
 40%|███▉      | 198/500 [00:13<00:21, 14.07it/s]
 40%|████      | 200/500 [00:13<00:21, 14.26it/s]
 40%|████      | 202/500 [00:13<00:20, 14.42it/s]
 41%|████      | 204/500 [00:14<00:20, 14.37it/s]
 41%|████      | 206/500 [00:14<00:19, 15.08it/s]
 42%|████▏     | 208/500 [00:14<00:19, 15.17it/s]
 42%|████▏     | 210/500 [00:14<00:18, 15.66it/s]
 42%|████▏     | 212/500 [00:14<00:19, 14.87it/s]
 43%|████▎     | 214/500 [00:14<00:18, 15.45it/s]
 43%|████▎     | 216/500 [00:14<00:18, 15.32it/s]
 44%|████▎     | 218/500 [00:14<00:18, 14.87it/s]
 44%|████▍     | 220/500 [00:15<00:18, 15.09it/s]
 44%|████▍     | 222/500 [00:15<00:18, 15.10it/s]
 45%|████▍     | 224/500 [00:15<00:18, 14.59it/s]
 45%|████▌     | 226/500 [00:15<00:17, 15.27it/s]
 46%|████▌     | 228/500 [00:15<00:17, 15.68it/s]
 46%|████▌     | 230/500 [00:15<00:18, 14.93it/s]
 46%|████▋     | 232/500 [00:15<00:17, 15.32it/s]
 47%|████▋     | 234/500 [00:15<00:17, 14.89it/s]
 47%|████▋     | 236/500 [00:16<00:17, 14.84it/s]
 48%|████▊     | 238/500 [00:16<00:18, 14.55it/s]
 48%|████▊     | 240/500 [00:16<00:17, 14.47it/s]
 48%|████▊     | 242/500 [00:16<00:17, 14.83it/s]
 49%|████▉     | 244/500 [00:16<00:16, 15.45it/s]
 49%|████▉     | 246/500 [00:16<00:16, 15.64it/s]
 50%|████▉     | 248/500 [00:16<00:15, 16.27it/s]
 50%|█████     | 250/500 [00:17<00:15, 15.73it/s]
 50%|█████     | 252/500 [00:17<00:16, 14.70it/s]
 51%|█████     | 254/500 [00:17<00:16, 14.81it/s]
 51%|█████     | 256/500 [00:17<00:16, 15.06it/s]
 52%|█████▏    | 258/500 [00:17<00:15, 15.29it/s]
 52%|█████▏    | 260/500 [00:17<00:15, 15.54it/s]
 52%|█████▏    | 262/500 [00:17<00:15, 15.19it/s]
 53%|█████▎    | 264/500 [00:17<00:15, 15.45it/s]
 53%|█████▎    | 266/500 [00:18<00:15, 15.15it/s]
 54%|█████▎    | 268/500 [00:18<00:15, 14.99it/s]
 54%|█████▍    | 270/500 [00:18<00:14, 15.49it/s]
 54%|█████▍    | 272/500 [00:18<00:15, 14.90it/s]
 55%|█████▍    | 274/500 [00:18<00:14, 15.31it/s]
 55%|█████▌    | 276/500 [00:18<00:14, 15.83it/s]
 56%|█████▌    | 278/500 [00:18<00:14, 15.75it/s]
 56%|█████▌    | 280/500 [00:18<00:14, 15.49it/s]
 56%|█████▋    | 282/500 [00:19<00:14, 14.91it/s]
 57%|█████▋    | 284/500 [00:19<00:15, 14.38it/s]
 57%|█████▋    | 286/500 [00:19<00:15, 14.12it/s]
 58%|█████▊    | 288/500 [00:19<00:14, 14.32it/s]
 58%|█████▊    | 290/500 [00:19<00:14, 14.29it/s]
 58%|█████▊    | 292/500 [00:19<00:14, 14.17it/s]
 59%|█████▉    | 294/500 [00:19<00:13, 14.81it/s]
 59%|█████▉    | 296/500 [00:20<00:14, 14.32it/s]
 60%|█████▉    | 298/500 [00:20<00:14, 13.59it/s]
 60%|██████    | 300/500 [00:20<00:14, 13.79it/s]
 60%|██████    | 302/500 [00:20<00:13, 14.17it/s]
 61%|██████    | 304/500 [00:20<00:13, 14.33it/s]
 61%|██████    | 306/500 [00:20<00:13, 14.41it/s]
 62%|██████▏   | 308/500 [00:20<00:12, 14.89it/s]
 62%|██████▏   | 310/500 [00:21<00:13, 14.48it/s]
 62%|██████▏   | 312/500 [00:21<00:13, 14.11it/s]
 63%|██████▎   | 314/500 [00:21<00:13, 14.24it/s]
 63%|██████▎   | 316/500 [00:21<00:12, 14.45it/s]
 64%|██████▎   | 318/500 [00:21<00:11, 15.43it/s]
 64%|██████▍   | 320/500 [00:21<00:11, 15.73it/s]
 64%|██████▍   | 322/500 [00:21<00:11, 15.89it/s]
 65%|██████▍   | 324/500 [00:22<00:11, 14.69it/s]
 65%|██████▌   | 326/500 [00:22<00:12, 13.82it/s]
 66%|██████▌   | 328/500 [00:22<00:12, 14.33it/s]
 66%|██████▌   | 330/500 [00:22<00:11, 14.94it/s]
 66%|██████▋   | 332/500 [00:22<00:11, 14.95it/s]
 67%|██████▋   | 334/500 [00:22<00:10, 15.16it/s]
 67%|██████▋   | 336/500 [00:22<00:10, 15.36it/s]
 68%|██████▊   | 338/500 [00:22<00:10, 15.46it/s]
 68%|██████▊   | 340/500 [00:23<00:10, 14.80it/s]
 68%|██████▊   | 342/500 [00:23<00:12, 12.58it/s]
 69%|██████▉   | 344/500 [00:23<00:12, 12.68it/s]
 69%|██████▉   | 346/500 [00:23<00:11, 13.91it/s]
 70%|██████▉   | 348/500 [00:23<00:11, 13.72it/s]
 70%|███████   | 350/500 [00:23<00:10, 14.13it/s]
 70%|███████   | 352/500 [00:23<00:09, 14.82it/s]
 71%|███████   | 354/500 [00:24<00:09, 14.99it/s]
 71%|███████   | 356/500 [00:24<00:09, 14.47it/s]
 72%|███████▏  | 358/500 [00:24<00:09, 14.63it/s]
 72%|███████▏  | 360/500 [00:24<00:09, 15.29it/s]
 72%|███████▏  | 362/500 [00:24<00:09, 14.41it/s]
 73%|███████▎  | 364/500 [00:24<00:09, 14.21it/s]
 73%|███████▎  | 366/500 [00:24<00:08, 14.92it/s]
 74%|███████▎  | 368/500 [00:25<00:08, 15.17it/s]
 74%|███████▍  | 370/500 [00:25<00:08, 15.53it/s]
 74%|███████▍  | 372/500 [00:25<00:08, 15.46it/s]
 75%|███████▍  | 374/500 [00:25<00:08, 14.90it/s]
 75%|███████▌  | 376/500 [00:25<00:08, 14.82it/s]
 76%|███████▌  | 378/500 [00:25<00:08, 14.97it/s]
 76%|███████▌  | 380/500 [00:25<00:08, 14.73it/s]
 76%|███████▋  | 382/500 [00:26<00:07, 14.97it/s]
 77%|███████▋  | 384/500 [00:26<00:07, 15.54it/s]
 77%|███████▋  | 386/500 [00:26<00:07, 15.75it/s]
 78%|███████▊  | 388/500 [00:26<00:07, 15.27it/s]
 78%|███████▊  | 390/500 [00:26<00:07, 14.72it/s]
 78%|███████▊  | 392/500 [00:26<00:06, 15.60it/s]
 79%|███████▉  | 394/500 [00:26<00:06, 15.44it/s]
 79%|███████▉  | 396/500 [00:26<00:06, 15.25it/s]
 80%|███████▉  | 398/500 [00:27<00:06, 16.02it/s]
 80%|████████  | 400/500 [00:27<00:06, 15.64it/s]
 80%|████████  | 402/500 [00:27<00:06, 15.95it/s]
 81%|████████  | 404/500 [00:27<00:06, 14.88it/s]
 81%|████████  | 406/500 [00:27<00:06, 14.07it/s]
 82%|████████▏ | 408/500 [00:27<00:06, 14.51it/s]
 82%|████████▏ | 410/500 [00:27<00:06, 14.19it/s]
 82%|████████▏ | 412/500 [00:28<00:06, 14.00it/s]
 83%|████████▎ | 414/500 [00:28<00:05, 14.58it/s]
 83%|████████▎ | 416/500 [00:28<00:06, 13.85it/s]
 84%|████████▎ | 418/500 [00:28<00:05, 14.07it/s]
 84%|████████▍ | 420/500 [00:28<00:05, 14.47it/s]
 84%|████████▍ | 422/500 [00:28<00:05, 14.69it/s]
 85%|████████▍ | 424/500 [00:28<00:05, 14.84it/s]
 85%|████████▌ | 426/500 [00:28<00:04, 15.56it/s]
 86%|████████▌ | 428/500 [00:29<00:04, 15.58it/s]
 86%|████████▌ | 430/500 [00:29<00:04, 14.51it/s]
 86%|████████▋ | 432/500 [00:29<00:04, 14.21it/s]
 87%|████████▋ | 434/500 [00:29<00:04, 14.55it/s]
 87%|████████▋ | 436/500 [00:29<00:04, 14.60it/s]
 88%|████████▊ | 438/500 [00:29<00:04, 14.39it/s]
 88%|████████▊ | 440/500 [00:29<00:03, 15.02it/s]
 88%|████████▊ | 442/500 [00:30<00:03, 15.01it/s]
 89%|████████▉ | 444/500 [00:30<00:03, 14.65it/s]
 89%|████████▉ | 446/500 [00:30<00:03, 15.49it/s]
 90%|████████▉ | 448/500 [00:30<00:03, 15.19it/s]
 90%|█████████ | 450/500 [00:30<00:03, 14.53it/s]
 90%|█████████ | 452/500 [00:30<00:03, 14.09it/s]
 91%|█████████ | 454/500 [00:30<00:03, 14.29it/s]
 91%|█████████ | 456/500 [00:31<00:03, 13.83it/s]
 92%|█████████▏| 458/500 [00:31<00:03, 13.96it/s]
 92%|█████████▏| 460/500 [00:31<00:02, 13.89it/s]
 92%|█████████▏| 462/500 [00:31<00:02, 14.16it/s]
 93%|█████████▎| 464/500 [00:31<00:02, 14.13it/s]
 93%|█████████▎| 466/500 [00:31<00:02, 14.65it/s]
 94%|█████████▎| 468/500 [00:31<00:02, 14.96it/s]
 94%|█████████▍| 470/500 [00:32<00:02, 14.08it/s]
 94%|█████████▍| 472/500 [00:32<00:01, 14.12it/s]
 95%|█████████▍| 474/500 [00:32<00:01, 13.96it/s]
 95%|█████████▌| 476/500 [00:32<00:01, 14.77it/s]
 96%|█████████▌| 478/500 [00:32<00:01, 15.19it/s]
 96%|█████████▌| 480/500 [00:32<00:01, 14.89it/s]
 96%|█████████▋| 482/500 [00:32<00:01, 14.77it/s]
 97%|█████████▋| 484/500 [00:32<00:01, 14.51it/s]
 97%|█████████▋| 486/500 [00:33<00:00, 14.72it/s]
 98%|█████████▊| 488/500 [00:33<00:00, 14.46it/s]
 98%|█████████▊| 490/500 [00:33<00:00, 14.96it/s]
 98%|█████████▊| 492/500 [00:33<00:00, 15.11it/s]
 99%|█████████▉| 494/500 [00:33<00:00, 14.85it/s]
 99%|█████████▉| 496/500 [00:33<00:00, 15.11it/s]
100%|█████████▉| 498/500 [00:33<00:00, 15.06it/s]
100%|██████████| 500/500 [00:34<00:00, 14.69it/s]
 70%|███████   | 7/10 [04:24<01:48, 36.30s/it]
  0%|          | 0/500 [00:00<?, ?it/s]
  0%|          | 2/500 [00:00<00:35, 14.02it/s]
  1%|          | 4/500 [00:00<00:34, 14.39it/s]
  1%|          | 6/500 [00:00<00:33, 14.94it/s]
  2%|▏         | 8/500 [00:00<00:34, 14.27it/s]
  2%|▏         | 10/500 [00:00<00:35, 13.68it/s]
  2%|▏         | 12/500 [00:00<00:35, 13.78it/s]
  3%|▎         | 14/500 [00:00<00:34, 14.23it/s]
  3%|▎         | 16/500 [00:01<00:34, 14.05it/s]
  4%|▎         | 18/500 [00:01<00:32, 14.85it/s]
  4%|▍         | 20/500 [00:01<00:32, 14.66it/s]
  4%|▍         | 22/500 [00:01<00:34, 13.77it/s]
  5%|▍         | 24/500 [00:01<00:36, 13.19it/s]
  5%|▌         | 26/500 [00:01<00:35, 13.53it/s]
  6%|▌         | 28/500 [00:01<00:33, 14.04it/s]
  6%|▌         | 30/500 [00:02<00:34, 13.75it/s]
  6%|▋         | 32/500 [00:02<00:33, 14.01it/s]
  7%|▋         | 34/500 [00:02<00:32, 14.44it/s]
  7%|▋         | 36/500 [00:02<00:31, 14.58it/s]
  8%|▊         | 38/500 [00:02<00:32, 14.32it/s]
  8%|▊         | 40/500 [00:02<00:31, 14.55it/s]
  8%|▊         | 42/500 [00:02<00:30, 14.90it/s]
  9%|▉         | 44/500 [00:03<00:29, 15.44it/s]
  9%|▉         | 46/500 [00:03<00:28, 15.68it/s]
 10%|▉         | 48/500 [00:03<00:30, 14.65it/s]
 10%|█         | 50/500 [00:03<00:31, 14.31it/s]
 10%|█         | 52/500 [00:03<00:29, 15.05it/s]
 11%|█         | 54/500 [00:03<00:32, 13.78it/s]
 11%|█         | 56/500 [00:03<00:31, 13.90it/s]
 12%|█▏        | 58/500 [00:04<00:33, 13.37it/s]
 12%|█▏        | 60/500 [00:04<00:31, 13.98it/s]
 12%|█▏        | 62/500 [00:04<00:31, 13.85it/s]
 13%|█▎        | 64/500 [00:04<00:31, 13.74it/s]
 13%|█▎        | 66/500 [00:04<00:31, 13.77it/s]
 14%|█▎        | 68/500 [00:04<00:31, 13.83it/s]
 14%|█▍        | 70/500 [00:04<00:30, 13.91it/s]
 14%|█▍        | 72/500 [00:05<00:28, 14.80it/s]
 15%|█▍        | 74/500 [00:05<00:29, 14.40it/s]
 15%|█▌        | 76/500 [00:05<00:29, 14.33it/s]
 16%|█▌        | 78/500 [00:05<00:29, 14.53it/s]
 16%|█▌        | 80/500 [00:05<00:28, 14.56it/s]
 16%|█▋        | 82/500 [00:05<00:29, 14.33it/s]
 17%|█▋        | 84/500 [00:05<00:28, 14.58it/s]
 17%|█▋        | 86/500 [00:06<00:27, 14.81it/s]
 18%|█▊        | 88/500 [00:06<00:27, 14.81it/s]
 18%|█▊        | 90/500 [00:06<00:26, 15.34it/s]
 18%|█▊        | 92/500 [00:06<00:26, 15.29it/s]
 19%|█▉        | 94/500 [00:06<00:28, 14.45it/s]
 19%|█▉        | 96/500 [00:06<00:28, 14.36it/s]
 20%|█▉        | 98/500 [00:06<00:28, 14.32it/s]
 20%|██        | 100/500 [00:06<00:27, 14.74it/s]
 20%|██        | 102/500 [00:07<00:27, 14.54it/s]
 21%|██        | 104/500 [00:07<00:27, 14.65it/s]
 21%|██        | 106/500 [00:07<00:28, 13.95it/s]
 22%|██▏       | 108/500 [00:07<00:26, 14.53it/s]
 22%|██▏       | 110/500 [00:07<00:26, 14.57it/s]
 22%|██▏       | 112/500 [00:07<00:29, 13.38it/s]
 23%|██▎       | 114/500 [00:07<00:28, 13.44it/s]
 23%|██▎       | 116/500 [00:08<00:27, 13.78it/s]
 24%|██▎       | 118/500 [00:08<00:28, 13.38it/s]
 24%|██▍       | 120/500 [00:08<00:27, 13.61it/s]
 24%|██▍       | 122/500 [00:08<00:26, 14.11it/s]
 25%|██▍       | 124/500 [00:08<00:25, 14.68it/s]
 25%|██▌       | 126/500 [00:08<00:26, 14.11it/s]
 26%|██▌       | 128/500 [00:08<00:26, 13.91it/s]
 26%|██▌       | 130/500 [00:09<00:26, 14.13it/s]
 26%|██▋       | 132/500 [00:09<00:25, 14.19it/s]
 27%|██▋       | 134/500 [00:09<00:25, 14.13it/s]
 27%|██▋       | 136/500 [00:09<00:24, 14.63it/s]
 28%|██▊       | 138/500 [00:09<00:24, 14.85it/s]
 28%|██▊       | 140/500 [00:09<00:24, 14.74it/s]
 28%|██▊       | 142/500 [00:09<00:26, 13.67it/s]
 29%|██▉       | 144/500 [00:10<00:25, 13.84it/s]
 29%|██▉       | 146/500 [00:10<00:25, 13.99it/s]
 30%|██▉       | 148/500 [00:10<00:25, 13.72it/s]
 30%|███       | 150/500 [00:10<00:24, 14.18it/s]
 30%|███       | 152/500 [00:10<00:22, 15.17it/s]
 31%|███       | 154/500 [00:10<00:22, 15.18it/s]
 31%|███       | 156/500 [00:10<00:23, 14.71it/s]
 32%|███▏      | 158/500 [00:11<00:22, 14.91it/s]
 32%|███▏      | 160/500 [00:11<00:22, 14.98it/s]
 32%|███▏      | 162/500 [00:11<00:22, 14.80it/s]
 33%|███▎      | 164/500 [00:11<00:23, 14.51it/s]
 33%|███▎      | 166/500 [00:11<00:22, 14.57it/s]
 34%|███▎      | 168/500 [00:11<00:24, 13.59it/s]
 34%|███▍      | 170/500 [00:11<00:23, 13.87it/s]
 34%|███▍      | 172/500 [00:12<00:24, 13.60it/s]
 35%|███▍      | 174/500 [00:12<00:24, 13.35it/s]
 35%|███▌      | 176/500 [00:12<00:22, 14.15it/s]
 36%|███▌      | 178/500 [00:12<00:23, 14.00it/s]
 36%|███▌      | 180/500 [00:12<00:21, 14.58it/s]
 36%|███▋      | 182/500 [00:12<00:22, 14.15it/s]
 37%|███▋      | 184/500 [00:12<00:21, 14.71it/s]
 37%|███▋      | 186/500 [00:13<00:21, 14.42it/s]
 38%|███▊      | 188/500 [00:13<00:21, 14.60it/s]
 38%|███▊      | 190/500 [00:13<00:21, 14.31it/s]
 38%|███▊      | 192/500 [00:13<00:21, 14.21it/s]
 39%|███▉      | 194/500 [00:13<00:22, 13.89it/s]
 39%|███▉      | 196/500 [00:13<00:20, 14.51it/s]
 40%|███▉      | 198/500 [00:13<00:21, 14.09it/s]
 40%|████      | 200/500 [00:14<00:20, 14.59it/s]
 40%|████      | 202/500 [00:14<00:21, 13.92it/s]
 41%|████      | 204/500 [00:14<00:23, 12.65it/s]
 41%|████      | 206/500 [00:14<00:26, 11.29it/s]
 42%|████▏     | 208/500 [00:14<00:28, 10.41it/s]
 42%|████▏     | 210/500 [00:15<00:28, 10.13it/s]
 42%|████▏     | 212/500 [00:15<00:30,  9.42it/s]
 43%|████▎     | 213/500 [00:15<00:31,  9.05it/s]
 43%|████▎     | 214/500 [00:15<00:33,  8.56it/s]
 43%|████▎     | 216/500 [00:15<00:29,  9.72it/s]
 43%|████▎     | 217/500 [00:15<00:30,  9.24it/s]
 44%|████▎     | 218/500 [00:15<00:30,  9.17it/s]
 44%|████▍     | 219/500 [00:16<00:31,  9.04it/s]
 44%|████▍     | 220/500 [00:16<00:30,  9.12it/s]
 44%|████▍     | 221/500 [00:16<00:30,  9.00it/s]
 45%|████▍     | 223/500 [00:16<00:25, 10.88it/s]
 45%|████▌     | 225/500 [00:16<00:22, 12.12it/s]
 45%|████▌     | 227/500 [00:16<00:21, 12.86it/s]
 46%|████▌     | 229/500 [00:16<00:19, 13.69it/s]
 46%|████▌     | 231/500 [00:16<00:19, 13.70it/s]
 47%|████▋     | 233/500 [00:17<00:19, 13.60it/s]
 47%|████▋     | 235/500 [00:17<00:19, 13.54it/s]
 47%|████▋     | 237/500 [00:17<00:18, 14.16it/s]
 48%|████▊     | 239/500 [00:17<00:18, 14.39it/s]
 48%|████▊     | 241/500 [00:17<00:17, 14.81it/s]
 49%|████▊     | 243/500 [00:17<00:17, 15.02it/s]
 49%|████▉     | 245/500 [00:17<00:17, 14.97it/s]
 49%|████▉     | 247/500 [00:18<00:16, 15.22it/s]
 50%|████▉     | 249/500 [00:18<00:16, 15.35it/s]
 50%|█████     | 251/500 [00:18<00:17, 14.23it/s]
 51%|█████     | 253/500 [00:18<00:17, 14.24it/s]
 51%|█████     | 255/500 [00:18<00:17, 13.84it/s]
 51%|█████▏    | 257/500 [00:18<00:17, 13.78it/s]
 52%|█████▏    | 259/500 [00:18<00:17, 13.87it/s]
 52%|█████▏    | 261/500 [00:19<00:16, 14.12it/s]
 53%|█████▎    | 263/500 [00:19<00:16, 14.03it/s]
 53%|█████▎    | 265/500 [00:19<00:17, 13.51it/s]
 53%|█████▎    | 267/500 [00:19<00:17, 13.40it/s]
 54%|█████▍    | 269/500 [00:19<00:17, 13.46it/s]
 54%|█████▍    | 271/500 [00:19<00:17, 12.93it/s]
 55%|█████▍    | 273/500 [00:19<00:17, 13.31it/s]
 55%|█████▌    | 275/500 [00:20<00:16, 13.74it/s]
 55%|█████▌    | 277/500 [00:20<00:15, 14.10it/s]
 56%|█████▌    | 279/500 [00:20<00:16, 13.42it/s]
 56%|█████▌    | 281/500 [00:20<00:15, 14.00it/s]
 57%|█████▋    | 283/500 [00:20<00:16, 13.52it/s]
 57%|█████▋    | 285/500 [00:20<00:15, 14.08it/s]
 57%|█████▋    | 287/500 [00:20<00:14, 14.68it/s]
 58%|█████▊    | 289/500 [00:21<00:14, 14.54it/s]
 58%|█████▊    | 291/500 [00:21<00:14, 14.05it/s]
 59%|█████▊    | 293/500 [00:21<00:14, 14.55it/s]
 59%|█████▉    | 295/500 [00:21<00:13, 14.77it/s]
 59%|█████▉    | 297/500 [00:21<00:13, 14.51it/s]
 60%|█████▉    | 299/500 [00:21<00:14, 14.35it/s]
 60%|██████    | 301/500 [00:21<00:14, 13.96it/s]
 61%|██████    | 303/500 [00:22<00:13, 14.63it/s]
 61%|██████    | 305/500 [00:22<00:13, 14.22it/s]
 61%|██████▏   | 307/500 [00:22<00:13, 14.43it/s]
 62%|██████▏   | 309/500 [00:22<00:13, 14.19it/s]
 62%|██████▏   | 311/500 [00:22<00:13, 14.52it/s]
 63%|██████▎   | 313/500 [00:22<00:13, 14.30it/s]
 63%|██████▎   | 315/500 [00:22<00:12, 14.37it/s]
 63%|██████▎   | 317/500 [00:23<00:12, 14.36it/s]
 64%|██████▍   | 319/500 [00:23<00:13, 13.91it/s]
 64%|██████▍   | 321/500 [00:23<00:12, 14.05it/s]
 65%|██████▍   | 323/500 [00:23<00:12, 13.63it/s]
 65%|██████▌   | 325/500 [00:23<00:12, 13.58it/s]
 65%|██████▌   | 327/500 [00:23<00:12, 14.00it/s]
 66%|██████▌   | 329/500 [00:23<00:12, 13.71it/s]
 66%|██████▌   | 331/500 [00:24<00:12, 13.56it/s]
 67%|██████▋   | 333/500 [00:24<00:12, 13.32it/s]
 67%|██████▋   | 335/500 [00:24<00:12, 13.67it/s]
 67%|██████▋   | 337/500 [00:24<00:11, 14.00it/s]
 68%|██████▊   | 339/500 [00:24<00:11, 14.26it/s]
 68%|██████▊   | 341/500 [00:24<00:10, 14.62it/s]
 69%|██████▊   | 343/500 [00:24<00:10, 14.58it/s]
 69%|██████▉   | 345/500 [00:24<00:10, 15.31it/s]
 69%|██████▉   | 347/500 [00:25<00:10, 14.27it/s]
 70%|██████▉   | 349/500 [00:25<00:10, 14.33it/s]
 70%|███████   | 351/500 [00:25<00:09, 15.01it/s]
 71%|███████   | 353/500 [00:25<00:10, 13.67it/s]
 71%|███████   | 355/500 [00:25<00:11, 13.13it/s]
 71%|███████▏  | 357/500 [00:25<00:10, 13.44it/s]
 72%|███████▏  | 359/500 [00:26<00:10, 14.07it/s]
 72%|███████▏  | 361/500 [00:26<00:09, 14.04it/s]
 73%|███████▎  | 363/500 [00:26<00:09, 14.42it/s]
 73%|███████▎  | 365/500 [00:26<00:09, 14.31it/s]
 73%|███████▎  | 367/500 [00:26<00:09, 13.33it/s]
 74%|███████▍  | 369/500 [00:26<00:09, 13.75it/s]
 74%|███████▍  | 371/500 [00:26<00:09, 14.20it/s]
 75%|███████▍  | 373/500 [00:27<00:08, 14.28it/s]
 75%|███████▌  | 375/500 [00:27<00:09, 13.85it/s]
 75%|███████▌  | 377/500 [00:27<00:08, 14.04it/s]
 76%|███████▌  | 379/500 [00:27<00:08, 14.20it/s]
 76%|███████▌  | 381/500 [00:27<00:08, 13.66it/s]
 77%|███████▋  | 383/500 [00:27<00:08, 14.34it/s]
 77%|███████▋  | 385/500 [00:27<00:07, 14.73it/s]
 77%|███████▋  | 387/500 [00:28<00:07, 14.70it/s]
 78%|███████▊  | 389/500 [00:28<00:07, 14.39it/s]
 78%|███████▊  | 391/500 [00:28<00:07, 14.86it/s]
 79%|███████▊  | 393/500 [00:28<00:07, 14.98it/s]
 79%|███████▉  | 395/500 [00:28<00:07, 14.72it/s]
 79%|███████▉  | 397/500 [00:28<00:07, 14.54it/s]
 80%|███████▉  | 399/500 [00:28<00:06, 14.49it/s]
 80%|████████  | 401/500 [00:28<00:07, 14.02it/s]
 81%|████████  | 403/500 [00:29<00:06, 14.87it/s]
 81%|████████  | 405/500 [00:29<00:06, 15.47it/s]
 81%|████████▏ | 407/500 [00:29<00:06, 14.85it/s]
 82%|████████▏ | 409/500 [00:29<00:06, 14.58it/s]
 82%|████████▏ | 411/500 [00:29<00:06, 13.83it/s]
 83%|████████▎ | 413/500 [00:29<00:06, 14.04it/s]
 83%|████████▎ | 415/500 [00:29<00:05, 14.33it/s]
 83%|████████▎ | 417/500 [00:30<00:05, 14.89it/s]
 84%|████████▍ | 419/500 [00:30<00:05, 15.30it/s]
 84%|████████▍ | 421/500 [00:30<00:05, 15.39it/s]
 85%|████████▍ | 423/500 [00:30<00:05, 15.01it/s]
 85%|████████▌ | 425/500 [00:30<00:05, 14.79it/s]
 85%|████████▌ | 427/500 [00:30<00:05, 14.34it/s]
 86%|████████▌ | 429/500 [00:30<00:04, 15.03it/s]
 86%|████████▌ | 431/500 [00:30<00:04, 15.09it/s]
 87%|████████▋ | 433/500 [00:31<00:04, 15.15it/s]
 87%|████████▋ | 435/500 [00:31<00:04, 15.93it/s]
 87%|████████▋ | 437/500 [00:31<00:04, 14.88it/s]
 88%|████████▊ | 439/500 [00:31<00:04, 14.44it/s]
 88%|████████▊ | 441/500 [00:31<00:04, 14.23it/s]
 89%|████████▊ | 443/500 [00:31<00:04, 13.55it/s]
 89%|████████▉ | 445/500 [00:31<00:04, 13.68it/s]
 89%|████████▉ | 447/500 [00:32<00:03, 13.60it/s]
 90%|████████▉ | 449/500 [00:32<00:03, 14.38it/s]
 90%|█████████ | 451/500 [00:32<00:03, 14.74it/s]
 91%|█████████ | 453/500 [00:32<00:03, 15.46it/s]
 91%|█████████ | 455/500 [00:32<00:03, 14.96it/s]
 91%|█████████▏| 457/500 [00:32<00:02, 14.72it/s]
 92%|█████████▏| 459/500 [00:32<00:02, 14.67it/s]
 92%|█████████▏| 461/500 [00:33<00:02, 14.50it/s]
 93%|█████████▎| 463/500 [00:33<00:02, 14.44it/s]
 93%|█████████▎| 465/500 [00:33<00:02, 14.45it/s]
 93%|█████████▎| 467/500 [00:33<00:02, 13.80it/s]
 94%|█████████▍| 469/500 [00:33<00:02, 14.22it/s]
 94%|█████████▍| 471/500 [00:33<00:01, 14.67it/s]
 95%|█████████▍| 473/500 [00:33<00:01, 14.64it/s]
 95%|█████████▌| 475/500 [00:34<00:01, 14.86it/s]
 95%|█████████▌| 477/500 [00:34<00:01, 14.70it/s]
 96%|█████████▌| 479/500 [00:34<00:01, 14.34it/s]
 96%|█████████▌| 481/500 [00:34<00:01, 14.02it/s]
 97%|█████████▋| 483/500 [00:34<00:01, 14.57it/s]
 97%|█████████▋| 485/500 [00:34<00:01, 14.49it/s]
 97%|█████████▋| 487/500 [00:34<00:00, 14.03it/s]
 98%|█████████▊| 489/500 [00:35<00:00, 14.11it/s]
 98%|█████████▊| 491/500 [00:35<00:00, 14.10it/s]
 99%|█████████▊| 493/500 [00:35<00:00, 13.75it/s]
 99%|█████████▉| 495/500 [00:35<00:00, 13.57it/s]
 99%|█████████▉| 497/500 [00:35<00:00, 13.82it/s]
100%|██████████| 500/500 [00:35<00:00, 13.96it/s]
 80%|████████  | 8/10 [04:59<01:12, 36.15s/it]
  0%|          | 0/500 [00:00<?, ?it/s]
  0%|          | 1/500 [00:00<00:52,  9.56it/s]
  1%|          | 3/500 [00:00<00:41, 11.95it/s]
  1%|          | 5/500 [00:00<00:41, 12.02it/s]
  1%|▏         | 7/500 [00:00<00:41, 11.92it/s]
  2%|▏         | 9/500 [00:00<00:39, 12.36it/s]
  2%|▏         | 11/500 [00:00<00:38, 12.75it/s]
  3%|▎         | 13/500 [00:01<00:38, 12.54it/s]
  3%|▎         | 15/500 [00:01<00:38, 12.61it/s]
  3%|▎         | 17/500 [00:01<00:38, 12.43it/s]
  4%|▍         | 19/500 [00:01<00:36, 13.24it/s]
  4%|▍         | 21/500 [00:01<00:37, 12.77it/s]
  5%|▍         | 23/500 [00:01<00:38, 12.41it/s]
  5%|▌         | 25/500 [00:02<00:37, 12.55it/s]
  5%|▌         | 27/500 [00:02<00:38, 12.31it/s]
  6%|▌         | 29/500 [00:02<00:38, 12.30it/s]
  6%|▌         | 31/500 [00:02<00:35, 13.22it/s]
  7%|▋         | 33/500 [00:02<00:37, 12.32it/s]
  7%|▋         | 35/500 [00:02<00:44, 10.50it/s]
  7%|▋         | 37/500 [00:03<00:49,  9.35it/s]
  8%|▊         | 39/500 [00:03<00:50,  9.07it/s]
  8%|▊         | 40/500 [00:03<00:50,  9.10it/s]
  8%|▊         | 41/500 [00:03<00:49,  9.25it/s]
  8%|▊         | 42/500 [00:03<00:49,  9.31it/s]
  9%|▊         | 43/500 [00:03<00:50,  9.05it/s]
  9%|▉         | 44/500 [00:03<00:51,  8.88it/s]
  9%|▉         | 46/500 [00:04<00:43, 10.40it/s]
 10%|▉         | 48/500 [00:04<00:40, 11.08it/s]
 10%|█         | 50/500 [00:04<00:40, 11.16it/s]
 10%|█         | 52/500 [00:04<00:38, 11.52it/s]
 11%|█         | 54/500 [00:04<00:37, 11.81it/s]
 11%|█         | 56/500 [00:04<00:36, 12.12it/s]
 12%|█▏        | 58/500 [00:05<00:35, 12.57it/s]
 12%|█▏        | 60/500 [00:05<00:37, 11.77it/s]
 12%|█▏        | 62/500 [00:05<00:37, 11.73it/s]
 13%|█▎        | 64/500 [00:05<00:35, 12.22it/s]
 13%|█▎        | 66/500 [00:05<00:37, 11.63it/s]
 14%|█▎        | 68/500 [00:05<00:34, 12.43it/s]
 14%|█▍        | 70/500 [00:06<00:33, 12.65it/s]
 14%|█▍        | 72/500 [00:06<00:36, 11.86it/s]
 15%|█▍        | 74/500 [00:06<00:34, 12.23it/s]
 15%|█▌        | 76/500 [00:06<00:35, 12.09it/s]
 16%|█▌        | 78/500 [00:06<00:35, 11.83it/s]
 16%|█▌        | 80/500 [00:06<00:33, 12.65it/s]
 16%|█▋        | 82/500 [00:07<00:31, 13.17it/s]
 17%|█▋        | 84/500 [00:07<00:32, 12.97it/s]
 17%|█▋        | 86/500 [00:07<00:32, 12.60it/s]
 18%|█▊        | 88/500 [00:07<00:30, 13.44it/s]
 18%|█▊        | 90/500 [00:07<00:31, 12.98it/s]
 18%|█▊        | 92/500 [00:07<00:31, 13.04it/s]
 19%|█▉        | 94/500 [00:07<00:32, 12.43it/s]
 19%|█▉        | 96/500 [00:08<00:33, 11.89it/s]
 20%|█▉        | 98/500 [00:08<00:36, 11.07it/s]
 20%|██        | 100/500 [00:08<00:35, 11.41it/s]
 20%|██        | 102/500 [00:08<00:34, 11.60it/s]
 21%|██        | 104/500 [00:08<00:33, 11.77it/s]
 21%|██        | 106/500 [00:09<00:32, 11.99it/s]
 22%|██▏       | 108/500 [00:09<00:31, 12.43it/s]
 22%|██▏       | 110/500 [00:09<00:32, 11.95it/s]
 22%|██▏       | 112/500 [00:09<00:31, 12.46it/s]
 23%|██▎       | 114/500 [00:09<00:31, 12.37it/s]
 23%|██▎       | 116/500 [00:09<00:30, 12.54it/s]
 24%|██▎       | 118/500 [00:10<00:32, 11.68it/s]
 24%|██▍       | 120/500 [00:10<00:32, 11.84it/s]
 24%|██▍       | 122/500 [00:10<00:33, 11.41it/s]
 25%|██▍       | 124/500 [00:10<00:31, 11.98it/s]
 25%|██▌       | 126/500 [00:10<00:32, 11.34it/s]
 26%|██▌       | 128/500 [00:10<00:32, 11.30it/s]
 26%|██▌       | 130/500 [00:11<00:30, 11.95it/s]
 26%|██▋       | 132/500 [00:11<00:30, 11.99it/s]
 27%|██▋       | 134/500 [00:11<00:30, 11.90it/s]
 27%|██▋       | 136/500 [00:11<00:28, 12.58it/s]
 28%|██▊       | 138/500 [00:11<00:28, 12.64it/s]
 28%|██▊       | 140/500 [00:11<00:28, 12.76it/s]
 28%|██▊       | 142/500 [00:12<00:30, 11.75it/s]
 29%|██▉       | 144/500 [00:12<00:28, 12.70it/s]
 29%|██▉       | 146/500 [00:12<00:27, 12.79it/s]
 30%|██▉       | 148/500 [00:12<00:27, 12.96it/s]
 30%|███       | 150/500 [00:12<00:28, 12.38it/s]
 30%|███       | 152/500 [00:12<00:25, 13.49it/s]
 31%|███       | 154/500 [00:12<00:26, 13.02it/s]
 31%|███       | 156/500 [00:13<00:27, 12.60it/s]
 32%|███▏      | 158/500 [00:13<00:29, 11.76it/s]
 32%|███▏      | 160/500 [00:13<00:29, 11.69it/s]
 32%|███▏      | 162/500 [00:13<00:26, 12.55it/s]
 33%|███▎      | 164/500 [00:13<00:26, 12.75it/s]
 33%|███▎      | 166/500 [00:13<00:26, 12.43it/s]
 34%|███▎      | 168/500 [00:14<00:27, 11.97it/s]
 34%|███▍      | 170/500 [00:14<00:27, 11.94it/s]
 34%|███▍      | 172/500 [00:14<00:27, 11.89it/s]
 35%|███▍      | 174/500 [00:14<00:27, 11.71it/s]
 35%|███▌      | 176/500 [00:14<00:27, 11.95it/s]
 36%|███▌      | 178/500 [00:14<00:26, 12.21it/s]
 36%|███▌      | 180/500 [00:15<00:25, 12.79it/s]
 36%|███▋      | 182/500 [00:15<00:25, 12.24it/s]
 37%|███▋      | 184/500 [00:15<00:25, 12.42it/s]
 37%|███▋      | 186/500 [00:15<00:24, 12.86it/s]
 38%|███▊      | 188/500 [00:15<00:26, 11.92it/s]
 38%|███▊      | 190/500 [00:15<00:24, 12.43it/s]
 38%|███▊      | 192/500 [00:16<00:25, 12.15it/s]
 39%|███▉      | 194/500 [00:16<00:25, 12.20it/s]
 39%|███▉      | 196/500 [00:16<00:26, 11.66it/s]
 40%|███▉      | 198/500 [00:16<00:25, 11.92it/s]
 40%|████      | 200/500 [00:16<00:25, 11.57it/s]
 40%|████      | 202/500 [00:16<00:24, 11.99it/s]
 41%|████      | 204/500 [00:17<00:24, 11.94it/s]
 41%|████      | 206/500 [00:17<00:23, 12.69it/s]
 42%|████▏     | 208/500 [00:17<00:22, 12.89it/s]
 42%|████▏     | 210/500 [00:17<00:22, 12.98it/s]
 42%|████▏     | 212/500 [00:17<00:22, 12.89it/s]
 43%|████▎     | 214/500 [00:17<00:21, 13.50it/s]
 43%|████▎     | 216/500 [00:17<00:21, 13.23it/s]
 44%|████▎     | 218/500 [00:18<00:22, 12.61it/s]
 44%|████▍     | 220/500 [00:18<00:21, 12.88it/s]
 44%|████▍     | 222/500 [00:18<00:20, 13.46it/s]
 45%|████▍     | 224/500 [00:18<00:21, 12.85it/s]
 45%|████▌     | 226/500 [00:18<00:21, 12.62it/s]
 46%|████▌     | 228/500 [00:18<00:22, 12.23it/s]
 46%|████▌     | 230/500 [00:19<00:21, 12.33it/s]
 46%|████▋     | 232/500 [00:19<00:21, 12.22it/s]
 47%|████▋     | 234/500 [00:19<00:20, 13.06it/s]
 47%|████▋     | 236/500 [00:19<00:20, 13.02it/s]
 48%|████▊     | 238/500 [00:19<00:19, 13.40it/s]
 48%|████▊     | 240/500 [00:19<00:20, 12.88it/s]
 48%|████▊     | 242/500 [00:20<00:21, 12.25it/s]
 49%|████▉     | 244/500 [00:20<00:21, 12.13it/s]
 49%|████▉     | 246/500 [00:20<00:21, 11.76it/s]
 50%|████▉     | 248/500 [00:20<00:22, 11.44it/s]
 50%|█████     | 250/500 [00:20<00:21, 11.48it/s]
 50%|█████     | 252/500 [00:20<00:21, 11.66it/s]
 51%|█████     | 254/500 [00:21<00:19, 12.54it/s]
 51%|█████     | 256/500 [00:21<00:19, 12.35it/s]
 52%|█████▏    | 258/500 [00:21<00:19, 12.51it/s]
 52%|█████▏    | 260/500 [00:21<00:20, 11.95it/s]
 52%|█████▏    | 262/500 [00:21<00:19, 12.51it/s]
 53%|█████▎    | 264/500 [00:21<00:19, 11.95it/s]
 53%|█████▎    | 266/500 [00:22<00:20, 11.55it/s]
 54%|█████▎    | 268/500 [00:22<00:19, 11.93it/s]
 54%|█████▍    | 270/500 [00:22<00:18, 12.21it/s]
 54%|█████▍    | 272/500 [00:22<00:19, 11.82it/s]
 55%|█████▍    | 274/500 [00:22<00:19, 11.89it/s]
 55%|█████▌    | 276/500 [00:22<00:19, 11.30it/s]
 56%|█████▌    | 278/500 [00:23<00:19, 11.39it/s]
 56%|█████▌    | 280/500 [00:23<00:18, 11.90it/s]
 56%|█████▋    | 282/500 [00:23<00:17, 12.59it/s]
 57%|█████▋    | 284/500 [00:23<00:19, 10.83it/s]
 57%|█████▋    | 286/500 [00:23<00:24,  8.68it/s]
 57%|█████▋    | 287/500 [00:24<00:29,  7.27it/s]
 58%|█████▊    | 288/500 [00:24<00:33,  6.42it/s]
 58%|█████▊    | 289/500 [00:24<00:34,  6.19it/s]
 58%|█████▊    | 290/500 [00:24<00:31,  6.64it/s]
 58%|█████▊    | 291/500 [00:24<00:30,  6.94it/s]
 58%|█████▊    | 292/500 [00:24<00:29,  7.02it/s]
 59%|█████▊    | 293/500 [00:25<00:28,  7.26it/s]
 59%|█████▉    | 294/500 [00:25<00:28,  7.24it/s]
 59%|█████▉    | 295/500 [00:25<00:26,  7.70it/s]
 59%|█████▉    | 296/500 [00:25<00:25,  7.90it/s]
 59%|█████▉    | 297/500 [00:25<00:25,  8.11it/s]
 60%|█████▉    | 298/500 [00:25<00:25,  7.91it/s]
 60%|█████▉    | 299/500 [00:25<00:25,  8.00it/s]
 60%|██████    | 300/500 [00:25<00:25,  7.73it/s]
 60%|██████    | 301/500 [00:26<00:26,  7.65it/s]
 60%|██████    | 302/500 [00:26<00:25,  7.86it/s]
 61%|██████    | 303/500 [00:26<00:24,  7.92it/s]
 61%|██████    | 304/500 [00:26<00:24,  7.94it/s]
 61%|██████    | 305/500 [00:26<00:24,  8.08it/s]
 61%|██████    | 306/500 [00:26<00:24,  7.94it/s]
 61%|██████▏   | 307/500 [00:26<00:24,  7.74it/s]
 62%|██████▏   | 309/500 [00:27<00:21,  9.05it/s]
 62%|██████▏   | 310/500 [00:27<00:21,  8.67it/s]
 62%|██████▏   | 311/500 [00:27<00:23,  8.18it/s]
 63%|██████▎   | 313/500 [00:27<00:20,  9.15it/s]
 63%|██████▎   | 314/500 [00:27<00:20,  9.15it/s]
 63%|██████▎   | 315/500 [00:27<00:21,  8.72it/s]
 63%|██████▎   | 316/500 [00:27<00:22,  8.36it/s]
 63%|██████▎   | 317/500 [00:27<00:21,  8.58it/s]
 64%|██████▎   | 318/500 [00:28<00:20,  8.85it/s]
 64%|██████▍   | 319/500 [00:28<00:21,  8.28it/s]
 64%|██████▍   | 320/500 [00:28<00:23,  7.67it/s]
 64%|██████▍   | 321/500 [00:28<00:22,  8.00it/s]
 64%|██████▍   | 322/500 [00:28<00:21,  8.47it/s]
 65%|██████▍   | 323/500 [00:28<00:21,  8.31it/s]
 65%|██████▍   | 324/500 [00:28<00:21,  8.14it/s]
 65%|██████▌   | 325/500 [00:28<00:21,  8.30it/s]
 65%|██████▌   | 326/500 [00:29<00:21,  8.04it/s]
 66%|██████▌   | 328/500 [00:29<00:19,  9.00it/s]
 66%|██████▌   | 329/500 [00:29<00:19,  8.90it/s]
 66%|██████▌   | 330/500 [00:29<00:20,  8.36it/s]
 66%|██████▌   | 331/500 [00:29<00:19,  8.64it/s]
 66%|██████▋   | 332/500 [00:29<00:19,  8.43it/s]
 67%|██████▋   | 333/500 [00:29<00:20,  8.10it/s]
 67%|██████▋   | 334/500 [00:30<00:19,  8.33it/s]
 67%|██████▋   | 335/500 [00:30<00:19,  8.26it/s]
 67%|██████▋   | 336/500 [00:30<00:21,  7.69it/s]
 67%|██████▋   | 337/500 [00:30<00:21,  7.57it/s]
 68%|██████▊   | 338/500 [00:30<00:21,  7.40it/s]
 68%|██████▊   | 339/500 [00:30<00:21,  7.38it/s]
 68%|██████▊   | 340/500 [00:30<00:21,  7.46it/s]
 68%|██████▊   | 341/500 [00:30<00:20,  7.88it/s]
 68%|██████▊   | 342/500 [00:31<00:21,  7.48it/s]
 69%|██████▊   | 343/500 [00:31<00:19,  7.92it/s]
 69%|██████▉   | 344/500 [00:31<00:19,  7.85it/s]
 69%|██████▉   | 345/500 [00:31<00:19,  7.81it/s]
 69%|██████▉   | 346/500 [00:31<00:20,  7.50it/s]
 69%|██████▉   | 347/500 [00:31<00:21,  7.21it/s]
 70%|██████▉   | 348/500 [00:31<00:19,  7.84it/s]
 70%|██████▉   | 349/500 [00:32<00:19,  7.92it/s]
 70%|███████   | 350/500 [00:32<00:19,  7.73it/s]
 70%|███████   | 351/500 [00:32<00:19,  7.67it/s]
 70%|███████   | 352/500 [00:32<00:19,  7.60it/s]
 71%|███████   | 353/500 [00:32<00:19,  7.54it/s]
 71%|███████   | 354/500 [00:32<00:18,  7.77it/s]
 71%|███████   | 356/500 [00:32<00:14,  9.89it/s]
 72%|███████▏  | 358/500 [00:32<00:12, 11.01it/s]
 72%|███████▏  | 360/500 [00:33<00:11, 12.14it/s]
 72%|███████▏  | 362/500 [00:33<00:11, 12.08it/s]
 73%|███████▎  | 364/500 [00:33<00:10, 12.92it/s]
 73%|███████▎  | 366/500 [00:33<00:11, 12.05it/s]
 74%|███████▎  | 368/500 [00:33<00:10, 12.48it/s]
 74%|███████▍  | 370/500 [00:33<00:10, 12.57it/s]
 74%|███████▍  | 372/500 [00:34<00:10, 12.34it/s]
 75%|███████▍  | 374/500 [00:34<00:10, 12.10it/s]
 75%|███████▌  | 376/500 [00:34<00:10, 12.14it/s]
 76%|███████▌  | 378/500 [00:34<00:09, 12.24it/s]
 76%|███████▌  | 380/500 [00:34<00:09, 12.60it/s]
 76%|███████▋  | 382/500 [00:34<00:08, 13.22it/s]
 77%|███████▋  | 384/500 [00:34<00:08, 13.38it/s]
 77%|███████▋  | 386/500 [00:35<00:08, 13.80it/s]
 78%|███████▊  | 388/500 [00:35<00:08, 12.85it/s]
 78%|███████▊  | 390/500 [00:35<00:08, 13.01it/s]
 78%|███████▊  | 392/500 [00:35<00:08, 13.18it/s]
 79%|███████▉  | 394/500 [00:35<00:08, 12.43it/s]
 79%|███████▉  | 396/500 [00:35<00:08, 12.09it/s]
 80%|███████▉  | 398/500 [00:36<00:08, 12.45it/s]
 80%|████████  | 400/500 [00:36<00:08, 11.70it/s]
 80%|████████  | 402/500 [00:36<00:08, 11.93it/s]
 81%|████████  | 404/500 [00:36<00:08, 11.99it/s]
 81%|████████  | 406/500 [00:36<00:07, 12.25it/s]
 82%|████████▏ | 408/500 [00:36<00:07, 12.00it/s]
 82%|████████▏ | 410/500 [00:37<00:07, 12.04it/s]
 82%|████████▏ | 412/500 [00:37<00:07, 11.88it/s]
 83%|████████▎ | 414/500 [00:37<00:07, 11.50it/s]
 83%|████████▎ | 416/500 [00:37<00:07, 11.93it/s]
 84%|████████▎ | 418/500 [00:37<00:06, 12.21it/s]
 84%|████████▍ | 420/500 [00:37<00:06, 12.94it/s]
 84%|████████▍ | 422/500 [00:38<00:05, 13.52it/s]
 85%|████████▍ | 424/500 [00:38<00:06, 12.56it/s]
 85%|████████▌ | 426/500 [00:38<00:05, 12.92it/s]
 86%|████████▌ | 428/500 [00:38<00:05, 12.43it/s]
 86%|████████▌ | 430/500 [00:38<00:05, 12.28it/s]
 86%|████████▋ | 432/500 [00:38<00:05, 12.36it/s]
 87%|████████▋ | 434/500 [00:39<00:05, 12.09it/s]
 87%|████████▋ | 436/500 [00:39<00:05, 11.59it/s]
 88%|████████▊ | 438/500 [00:39<00:05, 11.91it/s]
 88%|████████▊ | 440/500 [00:39<00:05, 11.95it/s]
 88%|████████▊ | 442/500 [00:39<00:04, 11.79it/s]
 89%|████████▉ | 444/500 [00:39<00:04, 12.03it/s]
 89%|████████▉ | 446/500 [00:40<00:04, 12.00it/s]
 90%|████████▉ | 448/500 [00:40<00:04, 12.71it/s]
 90%|█████████ | 450/500 [00:40<00:03, 13.02it/s]
 90%|█████████ | 452/500 [00:40<00:03, 12.07it/s]
 91%|█████████ | 454/500 [00:40<00:04, 11.05it/s]
 91%|█████████ | 456/500 [00:40<00:03, 11.15it/s]
 92%|█████████▏| 458/500 [00:41<00:03, 11.40it/s]
 92%|█████████▏| 460/500 [00:41<00:03, 12.14it/s]
 92%|█████████▏| 462/500 [00:41<00:03, 12.19it/s]
 93%|█████████▎| 464/500 [00:41<00:02, 12.19it/s]
 93%|█████████▎| 466/500 [00:41<00:02, 12.39it/s]
 94%|█████████▎| 468/500 [00:41<00:02, 12.95it/s]
 94%|█████████▍| 470/500 [00:41<00:02, 13.31it/s]
 94%|█████████▍| 472/500 [00:42<00:02, 13.65it/s]
 95%|█████████▍| 474/500 [00:42<00:01, 14.07it/s]
 95%|█████████▌| 476/500 [00:42<00:01, 12.85it/s]
 96%|█████████▌| 478/500 [00:42<00:01, 13.28it/s]
 96%|█████████▌| 480/500 [00:42<00:01, 12.79it/s]
 96%|█████████▋| 482/500 [00:42<00:01, 12.33it/s]
 97%|█████████▋| 484/500 [00:43<00:01, 12.30it/s]
 97%|█████████▋| 486/500 [00:43<00:01, 12.18it/s]
 98%|█████████▊| 488/500 [00:43<00:00, 12.38it/s]
 98%|█████████▊| 490/500 [00:43<00:00, 13.48it/s]
 98%|█████████▊| 492/500 [00:43<00:00, 14.15it/s]
 99%|█████████▉| 494/500 [00:43<00:00, 13.83it/s]
 99%|█████████▉| 496/500 [00:43<00:00, 13.02it/s]
100%|█████████▉| 498/500 [00:44<00:00, 12.67it/s]
100%|██████████| 500/500 [00:44<00:00, 11.28it/s]
 90%|█████████ | 9/10 [05:44<00:38, 38.72s/it]
  0%|          | 0/500 [00:00<?, ?it/s]
  0%|          | 2/500 [00:00<00:45, 10.84it/s]
  1%|          | 4/500 [00:00<00:42, 11.77it/s]
  1%|          | 6/500 [00:00<00:42, 11.60it/s]
  2%|▏         | 8/500 [00:00<00:41, 11.97it/s]
  2%|▏         | 10/500 [00:00<00:39, 12.45it/s]
  2%|▏         | 12/500 [00:00<00:38, 12.82it/s]
  3%|▎         | 14/500 [00:01<00:37, 12.97it/s]
  3%|▎         | 16/500 [00:01<00:39, 12.40it/s]
  4%|▎         | 18/500 [00:01<00:37, 12.72it/s]
  4%|▍         | 20/500 [00:01<00:38, 12.56it/s]
  4%|▍         | 22/500 [00:01<00:38, 12.38it/s]
  5%|▍         | 24/500 [00:01<00:37, 12.68it/s]
  5%|▌         | 26/500 [00:02<00:36, 12.94it/s]
  6%|▌         | 28/500 [00:02<00:35, 13.14it/s]
  6%|▌         | 30/500 [00:02<00:35, 13.11it/s]
  6%|▋         | 32/500 [00:02<00:36, 12.90it/s]
  7%|▋         | 34/500 [00:02<00:35, 13.08it/s]
  7%|▋         | 36/500 [00:02<00:35, 13.24it/s]
  8%|▊         | 38/500 [00:02<00:35, 13.19it/s]
  8%|▊         | 40/500 [00:03<00:35, 12.89it/s]
  8%|▊         | 42/500 [00:03<00:35, 12.80it/s]
  9%|▉         | 44/500 [00:03<00:36, 12.49it/s]
  9%|▉         | 46/500 [00:03<00:34, 13.11it/s]
 10%|▉         | 48/500 [00:03<00:37, 12.08it/s]
 10%|█         | 50/500 [00:03<00:35, 12.53it/s]
 10%|█         | 52/500 [00:04<00:34, 12.86it/s]
 11%|█         | 54/500 [00:04<00:35, 12.57it/s]
 11%|█         | 56/500 [00:04<00:36, 12.25it/s]
 12%|█▏        | 58/500 [00:04<00:36, 12.19it/s]
 12%|█▏        | 60/500 [00:04<00:36, 12.03it/s]
 12%|█▏        | 62/500 [00:04<00:35, 12.41it/s]
 13%|█▎        | 64/500 [00:05<00:36, 11.94it/s]
 13%|█▎        | 66/500 [00:05<00:36, 12.03it/s]
 14%|█▎        | 68/500 [00:05<00:35, 12.15it/s]
 14%|█▍        | 70/500 [00:05<00:33, 12.89it/s]
 14%|█▍        | 72/500 [00:05<00:32, 13.09it/s]
 15%|█▍        | 74/500 [00:05<00:33, 12.56it/s]
 15%|█▌        | 76/500 [00:06<00:33, 12.63it/s]
 16%|█▌        | 78/500 [00:06<00:34, 12.23it/s]
 16%|█▌        | 80/500 [00:06<00:34, 12.14it/s]
 16%|█▋        | 82/500 [00:06<00:34, 12.00it/s]
 17%|█▋        | 84/500 [00:06<00:33, 12.39it/s]
 17%|█▋        | 86/500 [00:06<00:32, 12.66it/s]
 18%|█▊        | 88/500 [00:07<00:32, 12.54it/s]
 18%|█▊        | 90/500 [00:07<00:32, 12.51it/s]
 18%|█▊        | 92/500 [00:07<00:34, 11.91it/s]
 19%|█▉        | 94/500 [00:07<00:33, 12.03it/s]
 19%|█▉        | 96/500 [00:07<00:32, 12.30it/s]
 20%|█▉        | 98/500 [00:07<00:31, 12.70it/s]
 20%|██        | 100/500 [00:08<00:32, 12.47it/s]
 20%|██        | 102/500 [00:08<00:31, 12.82it/s]
 21%|██        | 104/500 [00:08<00:30, 13.08it/s]
 21%|██        | 106/500 [00:08<00:29, 13.15it/s]
 22%|██▏       | 108/500 [00:08<00:29, 13.43it/s]
 22%|██▏       | 110/500 [00:08<00:29, 13.37it/s]
 22%|██▏       | 112/500 [00:08<00:29, 13.10it/s]
 23%|██▎       | 114/500 [00:09<00:29, 12.96it/s]
 23%|██▎       | 116/500 [00:09<00:29, 13.11it/s]
 24%|██▎       | 118/500 [00:09<00:28, 13.55it/s]
 24%|██▍       | 120/500 [00:09<00:27, 13.75it/s]
 24%|██▍       | 122/500 [00:09<00:27, 13.82it/s]
 25%|██▍       | 124/500 [00:09<00:28, 13.39it/s]
 25%|██▌       | 126/500 [00:09<00:27, 13.46it/s]
 26%|██▌       | 128/500 [00:10<00:28, 13.20it/s]
 26%|██▌       | 130/500 [00:10<00:27, 13.30it/s]
 26%|██▋       | 132/500 [00:10<00:27, 13.26it/s]
 27%|██▋       | 134/500 [00:10<00:27, 13.19it/s]
 27%|██▋       | 136/500 [00:10<00:27, 13.11it/s]
 28%|██▊       | 138/500 [00:10<00:28, 12.75it/s]
 28%|██▊       | 140/500 [00:11<00:29, 12.18it/s]
 28%|██▊       | 142/500 [00:11<00:29, 12.18it/s]
 29%|██▉       | 144/500 [00:11<00:28, 12.38it/s]
 29%|██▉       | 146/500 [00:11<00:26, 13.15it/s]
 30%|██▉       | 148/500 [00:11<00:27, 12.82it/s]
 30%|███       | 150/500 [00:11<00:27, 12.89it/s]
 30%|███       | 152/500 [00:11<00:28, 12.30it/s]
 31%|███       | 154/500 [00:12<00:27, 12.58it/s]
 31%|███       | 156/500 [00:12<00:26, 12.98it/s]
 32%|███▏      | 158/500 [00:12<00:27, 12.55it/s]
 32%|███▏      | 160/500 [00:12<00:26, 12.86it/s]
 32%|███▏      | 162/500 [00:12<00:24, 13.59it/s]
 33%|███▎      | 164/500 [00:12<00:25, 13.06it/s]
 33%|███▎      | 166/500 [00:13<00:27, 12.11it/s]
 34%|███▎      | 168/500 [00:13<00:26, 12.41it/s]
 34%|███▍      | 170/500 [00:13<00:27, 12.15it/s]
 34%|███▍      | 172/500 [00:13<00:26, 12.50it/s]
 35%|███▍      | 174/500 [00:13<00:26, 12.34it/s]
 35%|███▌      | 176/500 [00:13<00:26, 12.06it/s]
 36%|███▌      | 178/500 [00:14<00:25, 12.42it/s]
 36%|███▌      | 180/500 [00:14<00:24, 13.08it/s]
 36%|███▋      | 182/500 [00:14<00:24, 13.16it/s]
 37%|███▋      | 184/500 [00:14<00:24, 12.75it/s]
 37%|███▋      | 186/500 [00:14<00:24, 12.84it/s]
 38%|███▊      | 188/500 [00:14<00:24, 12.60it/s]
 38%|███▊      | 190/500 [00:15<00:25, 12.08it/s]
 38%|███▊      | 192/500 [00:15<00:26, 11.68it/s]
 39%|███▉      | 194/500 [00:15<00:25, 12.15it/s]
 39%|███▉      | 196/500 [00:15<00:24, 12.37it/s]
 40%|███▉      | 198/500 [00:15<00:24, 12.19it/s]
 40%|████      | 200/500 [00:15<00:23, 12.71it/s]
 40%|████      | 202/500 [00:15<00:23, 12.47it/s]
 41%|████      | 204/500 [00:16<00:23, 12.67it/s]
 41%|████      | 206/500 [00:16<00:23, 12.76it/s]
 42%|████▏     | 208/500 [00:16<00:23, 12.52it/s]
 42%|████▏     | 210/500 [00:16<00:23, 12.54it/s]
 42%|████▏     | 212/500 [00:16<00:21, 13.26it/s]
 43%|████▎     | 214/500 [00:16<00:21, 13.21it/s]
 43%|████▎     | 216/500 [00:17<00:21, 13.13it/s]
 44%|████▎     | 218/500 [00:17<00:22, 12.78it/s]
 44%|████▍     | 220/500 [00:17<00:21, 12.98it/s]
 44%|████▍     | 222/500 [00:17<00:20, 13.56it/s]
 45%|████▍     | 224/500 [00:17<00:20, 13.24it/s]
 45%|████▌     | 226/500 [00:17<00:21, 12.96it/s]
 46%|████▌     | 228/500 [00:18<00:22, 12.15it/s]
 46%|████▌     | 230/500 [00:18<00:22, 11.89it/s]
 46%|████▋     | 232/500 [00:18<00:21, 12.47it/s]
 47%|████▋     | 234/500 [00:18<00:20, 12.69it/s]
 47%|████▋     | 236/500 [00:18<00:20, 12.61it/s]
 48%|████▊     | 238/500 [00:18<00:20, 13.07it/s]
 48%|████▊     | 240/500 [00:18<00:20, 12.82it/s]
 48%|████▊     | 242/500 [00:19<00:20, 12.88it/s]
 49%|████▉     | 244/500 [00:19<00:19, 12.81it/s]
 49%|████▉     | 246/500 [00:19<00:20, 12.43it/s]
 50%|████▉     | 248/500 [00:19<00:20, 12.46it/s]
 50%|█████     | 250/500 [00:19<00:19, 12.53it/s]
 50%|█████     | 252/500 [00:19<00:20, 12.25it/s]
 51%|█████     | 254/500 [00:20<00:19, 12.59it/s]
 51%|█████     | 256/500 [00:20<00:20, 12.17it/s]
 52%|█████▏    | 258/500 [00:20<00:20, 11.97it/s]
 52%|█████▏    | 260/500 [00:20<00:19, 12.01it/s]
 52%|█████▏    | 262/500 [00:20<00:20, 11.36it/s]
 53%|█████▎    | 264/500 [00:20<00:20, 11.53it/s]
 53%|█████▎    | 266/500 [00:21<00:19, 11.76it/s]
 54%|█████▎    | 268/500 [00:21<00:19, 11.91it/s]
 54%|█████▍    | 270/500 [00:21<00:19, 12.10it/s]
 54%|█████▍    | 272/500 [00:21<00:18, 12.24it/s]
 55%|█████▍    | 274/500 [00:21<00:18, 12.44it/s]
 55%|█████▌    | 276/500 [00:21<00:18, 12.26it/s]
 56%|█████▌    | 278/500 [00:22<00:18, 12.33it/s]
 56%|█████▌    | 280/500 [00:22<00:17, 12.47it/s]
 56%|█████▋    | 282/500 [00:22<00:17, 12.23it/s]
 57%|█████▋    | 284/500 [00:22<00:17, 12.40it/s]
 57%|█████▋    | 286/500 [00:22<00:17, 12.19it/s]
 58%|█████▊    | 288/500 [00:22<00:17, 11.92it/s]
 58%|█████▊    | 290/500 [00:23<00:17, 11.93it/s]
 58%|█████▊    | 292/500 [00:23<00:16, 12.35it/s]
 59%|█████▉    | 294/500 [00:23<00:16, 12.13it/s]
 59%|█████▉    | 296/500 [00:23<00:16, 12.54it/s]
 60%|█████▉    | 298/500 [00:23<00:16, 12.25it/s]
 60%|██████    | 300/500 [00:23<00:16, 12.44it/s]
 60%|██████    | 302/500 [00:24<00:16, 12.12it/s]
 61%|██████    | 304/500 [00:24<00:16, 11.95it/s]
 61%|██████    | 306/500 [00:24<00:16, 11.72it/s]
 62%|██████▏   | 308/500 [00:24<00:15, 12.23it/s]
 62%|██████▏   | 310/500 [00:24<00:15, 12.30it/s]
 62%|██████▏   | 312/500 [00:24<00:14, 12.59it/s]
 63%|██████▎   | 314/500 [00:24<00:14, 12.80it/s]
 63%|██████▎   | 316/500 [00:25<00:13, 13.18it/s]
 64%|██████▎   | 318/500 [00:25<00:13, 13.10it/s]
 64%|██████▍   | 320/500 [00:25<00:14, 12.48it/s]
 64%|██████▍   | 322/500 [00:25<00:14, 12.33it/s]
 65%|██████▍   | 324/500 [00:25<00:14, 12.03it/s]
 65%|██████▌   | 326/500 [00:25<00:13, 12.55it/s]
 66%|██████▌   | 328/500 [00:26<00:13, 12.39it/s]
 66%|██████▌   | 330/500 [00:26<00:13, 12.52it/s]
 66%|██████▋   | 332/500 [00:26<00:13, 12.69it/s]
 67%|██████▋   | 334/500 [00:26<00:13, 12.23it/s]
 67%|██████▋   | 336/500 [00:26<00:12, 12.91it/s]
 68%|██████▊   | 338/500 [00:26<00:12, 12.99it/s]
 68%|██████▊   | 340/500 [00:27<00:12, 12.88it/s]
 68%|██████▊   | 342/500 [00:27<00:12, 12.98it/s]
 69%|██████▉   | 344/500 [00:27<00:12, 12.50it/s]
 69%|██████▉   | 346/500 [00:27<00:12, 12.33it/s]
 70%|██████▉   | 348/500 [00:27<00:11, 12.77it/s]
 70%|███████   | 350/500 [00:27<00:11, 12.80it/s]
 70%|███████   | 352/500 [00:27<00:11, 12.77it/s]
 71%|███████   | 354/500 [00:28<00:11, 12.60it/s]
 71%|███████   | 356/500 [00:28<00:10, 13.23it/s]
 72%|███████▏  | 358/500 [00:28<00:11, 12.82it/s]
 72%|███████▏  | 360/500 [00:28<00:10, 12.82it/s]
 72%|███████▏  | 362/500 [00:28<00:10, 13.00it/s]
 73%|███████▎  | 364/500 [00:28<00:10, 13.41it/s]
 73%|███████▎  | 366/500 [00:29<00:09, 13.74it/s]
 74%|███████▎  | 368/500 [00:29<00:09, 13.99it/s]
 74%|███████▍  | 370/500 [00:29<00:10, 12.89it/s]
 74%|███████▍  | 372/500 [00:29<00:10, 12.68it/s]
 75%|███████▍  | 374/500 [00:29<00:09, 12.77it/s]
 75%|███████▌  | 376/500 [00:29<00:09, 13.23it/s]
 76%|███████▌  | 378/500 [00:29<00:09, 13.45it/s]
 76%|███████▌  | 380/500 [00:30<00:09, 13.08it/s]
 76%|███████▋  | 382/500 [00:30<00:09, 12.99it/s]
 77%|███████▋  | 384/500 [00:30<00:09, 12.49it/s]
 77%|███████▋  | 386/500 [00:30<00:09, 12.50it/s]
 78%|███████▊  | 388/500 [00:30<00:08, 12.74it/s]
 78%|███████▊  | 390/500 [00:30<00:08, 13.67it/s]
 78%|███████▊  | 392/500 [00:31<00:07, 14.23it/s]
 79%|███████▉  | 394/500 [00:31<00:07, 13.63it/s]
 79%|███████▉  | 396/500 [00:31<00:07, 13.77it/s]
 80%|███████▉  | 398/500 [00:31<00:07, 13.17it/s]
 80%|████████  | 400/500 [00:31<00:07, 12.60it/s]
 80%|████████  | 402/500 [00:31<00:07, 12.60it/s]
 81%|████████  | 404/500 [00:32<00:07, 12.09it/s]
 81%|████████  | 406/500 [00:32<00:07, 12.21it/s]
 82%|████████▏ | 408/500 [00:32<00:07, 12.67it/s]
 82%|████████▏ | 410/500 [00:32<00:07, 12.16it/s]
 82%|████████▏ | 412/500 [00:32<00:07, 12.52it/s]
 83%|████████▎ | 414/500 [00:32<00:06, 12.44it/s]
 83%|████████▎ | 416/500 [00:32<00:06, 12.64it/s]
 84%|████████▎ | 418/500 [00:33<00:06, 12.67it/s]
 84%|████████▍ | 420/500 [00:33<00:06, 12.34it/s]
 84%|████████▍ | 422/500 [00:33<00:06, 12.51it/s]
 85%|████████▍ | 424/500 [00:33<00:06, 12.53it/s]
 85%|████████▌ | 426/500 [00:33<00:06, 12.23it/s]
 86%|████████▌ | 428/500 [00:33<00:05, 12.43it/s]
 86%|████████▌ | 430/500 [00:34<00:05, 11.85it/s]
 86%|████████▋ | 432/500 [00:34<00:05, 12.15it/s]
 87%|████████▋ | 434/500 [00:34<00:05, 11.73it/s]
 87%|████████▋ | 436/500 [00:34<00:05, 12.05it/s]
 88%|████████▊ | 438/500 [00:34<00:04, 12.77it/s]
 88%|████████▊ | 440/500 [00:34<00:04, 12.58it/s]
 88%|████████▊ | 442/500 [00:35<00:04, 12.57it/s]
 89%|████████▉ | 444/500 [00:35<00:04, 12.32it/s]
 89%|████████▉ | 446/500 [00:35<00:04, 12.78it/s]
 90%|████████▉ | 448/500 [00:35<00:04, 12.55it/s]
 90%|█████████ | 450/500 [00:35<00:03, 12.54it/s]
 90%|█████████ | 452/500 [00:35<00:03, 12.71it/s]
 91%|█████████ | 454/500 [00:35<00:03, 12.89it/s]
 91%|█████████ | 456/500 [00:36<00:03, 12.62it/s]
 92%|█████████▏| 458/500 [00:36<00:03, 12.49it/s]
 92%|█████████▏| 460/500 [00:36<00:03, 12.87it/s]
 92%|█████████▏| 462/500 [00:36<00:02, 13.01it/s]
 93%|█████████▎| 464/500 [00:36<00:02, 13.29it/s]
 93%|█████████▎| 466/500 [00:36<00:02, 12.61it/s]
 94%|█████████▎| 468/500 [00:37<00:02, 12.23it/s]
 94%|█████████▍| 470/500 [00:37<00:02, 11.77it/s]
 94%|█████████▍| 472/500 [00:37<00:02, 12.24it/s]
 95%|█████████▍| 474/500 [00:37<00:02, 12.59it/s]
 95%|█████████▌| 476/500 [00:37<00:01, 12.88it/s]
 96%|█████████▌| 478/500 [00:37<00:01, 12.75it/s]
 96%|█████████▌| 480/500 [00:38<00:01, 12.07it/s]
 96%|█████████▋| 482/500 [00:38<00:01, 12.22it/s]
 97%|█████████▋| 484/500 [00:38<00:01, 11.84it/s]
 97%|█████████▋| 486/500 [00:38<00:01, 12.35it/s]
 98%|█████████▊| 488/500 [00:38<00:00, 12.57it/s]
 98%|█████████▊| 490/500 [00:38<00:00, 11.95it/s]
 98%|█████████▊| 492/500 [00:39<00:00, 11.96it/s]
 99%|█████████▉| 494/500 [00:39<00:00, 11.97it/s]
 99%|█████████▉| 496/500 [00:39<00:00, 12.13it/s]
100%|█████████▉| 498/500 [00:39<00:00, 12.09it/s]
100%|██████████| 500/500 [00:39<00:00, 12.58it/s]
100%|██████████| 10/10 [06:23<00:00, 38.40s/it]

View first 5 rows of the data

In [ ]:
# View the head of the DataFrame
dataset.head()
Out[ ]:
features class
0 [-665.89154, 142.60606, 18.392824, 25.345766, ... 1
1 [-592.67865, 113.82476, -0.4727389, 24.122704,... 0
2 [-633.1592, 31.215343, 18.35936, 33.875095, 12... 6
3 [-627.3246, 89.33748, 20.073849, 27.20781, 20.... 7
4 [-629.3813, 77.617905, 8.784167, 71.34374, 15.... 8
In [ ]:
# Storing the class as int 
dataset['class'] = [int(x) for x in dataset['class']]
In [ ]:
# Check the frequency of classes in the dataset
dataset['class'].value_counts()
Out[ ]:
1    500
0    500
6    500
7    500
8    500
5    500
9    500
4    500
3    500
2    500
Name: class, dtype: int64

Visualizing the Mel Frequency Cepstral Coefficients Using a Spectrogram¶

  • draw_spectrograms : From the Mel Coefficients we are extracting for a particular audio, this function is creating the 2-D graph of those coefficients with the X-axis representing time and the Y-axis shows the corresponding Mel coefficients in that time step.
In [ ]:
# A function which returns MFCC
def draw_spectrograms(audio_data, sample_rate):

    # Extract features
    extracted_features = librosa.feature.mfcc(y = audio_data,
                                              sr = sample_rate,
                                              n_mfcc = 40)
    
    # Return features without scaling
    return extracted_features

The very first MFCC coefficient (0th coefficient) does not provide information about the overall shape of the spectrum. It simply communicates a constant offset or the addition of a constant value to the full spectrum. As a result, when performing classification, many practitioners will disregard the initial MFCC. In the images, you can see those represented by blue pixels.

We can plot the MFCCs, but it's difficult to tell what kind of signal is hiding behind such representation.

In [ ]:
# Creating subplots
fig, ax = plt.subplots(5, 2, figsize = (15, 30))

# Initializing row and column variables for subplots
row = 0
column = 0

for digit in range(10):

    # Get the audio of different classes (0-9)
    audio_data, sample_rate = get_audio_raw(digit)
    
    # Extract their MFCC
    mfcc = draw_spectrograms(audio_data, sample_rate)
    print(f"Shape of MFCC of audio digit {digit} ---> ", mfcc.shape)
    
    # Display the plots and its title
    ax[row,column].set_title(f"MFCC of audio class {digit} across time")
    librosa.display.specshow(mfcc, sr = 22050, ax = ax[row, column])
    
    # Set X-labels and Y-labels
    ax[row,column].set_xlabel("Time")
    ax[row,column].set_ylabel("MFCC Coefficients")
    
    # Conditions for positioning of the plots
    if column == 1:
        column = 0
        row += 1
    else:
        column+=1
        
    
plt.tight_layout(pad = 3)   
plt.show()
Shape of MFCC of audio digit 0 --->  (40, 34)
Shape of MFCC of audio digit 1 --->  (40, 19)
Shape of MFCC of audio digit 2 --->  (40, 24)
Shape of MFCC of audio digit 3 --->  (40, 27)
Shape of MFCC of audio digit 4 --->  (40, 21)
Shape of MFCC of audio digit 5 --->  (40, 28)
Shape of MFCC of audio digit 6 --->  (40, 31)
Shape of MFCC of audio digit 7 --->  (40, 28)
Shape of MFCC of audio digit 8 --->  (40, 26)
Shape of MFCC of audio digit 9 --->  (40, 25)

Visual Inspection of MFCC Spectrograms:

On inspecting them visually, we can see that there are a lot of deviations from the spectrograms of one audio to another. There are a lot of tiny rectangles and bars whose positions are unique to each audio. So, the Artificial Neural Network should be able to perform decently well in identifying these audios.

Perform the Train-Test-Split¶

  • Split the data into train and test sets
In [ ]:
# Import train_test_split function
from sklearn.model_selection import train_test_split

X = np.array(dataset['features'].to_list())
Y = np.array(dataset['class'].to_list())

# Create train set and test set
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, train_size = 0.75, shuffle = True, random_state = 8)
In [ ]:
# Checking the shape of the data
X_train.shape
Out[ ]:
(3750, 40)

Modeling¶

  • Create an artificial neural network to recognize the digit.

About the libraries:

  • Keras: Keras is an open-source deep-learning library in Python. Keras is popular because the API was clean and simple, allowing standard deep learning models to be defined, fit, and evaluated in just a few lines of code.
  • Sklearn :
    • Simple and efficient tools for predictive data analysis
    • Accessible to everybody, and reusable in various contexts
    • Built on NumPy, SciPy, and matplotlib
    • Open source, commercially usable

Importing the necessary libraries for building the model¶

In [ ]:
# To create an ANN model
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout

# To create a checkpoint and save the best model
from tensorflow.keras.callbacks import ModelCheckpoint

# To load the model
from tensorflow.keras.models import load_model

# To evaluate the model
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.preprocessing import LabelBinarizer

Model Creation¶

Why are we using Artificial Neural Networks (ANNs)?¶

When we convert audios to their corresponding spectrograms, we will have similar spectrograms for similar audios irrespective of who the speaker is, and what their pitch and timber is like. So local spatiality is not going to be a problem, meaning convolutional layers or other such feature extraction layers would be unnecessary on top of our fully connected layers, as they would just be adding to our computational redundancy. That means, a simple Artificial Neural Network (Feedforward Neural Network) should be enough for this use case.

We will use a Sequential model with multiple connected hidden layers, and an output layer that returns a single, continuous value.

  • A Sequential model is a linear stack of layers. Sequential models can be created by giving a list of layer instances.
  • A dense layer of neurons is a simple layer of neurons in which each neuron receives input from all of the neurons in the previous layer.
  • The most popular function employed for hidden layers is the rectified linear activation function, or ReLU activation function. It's popular because it's easy to use and effective in getting around the limitations of other popular activation functions like Sigmoid and Tanh.
In [ ]:
# Crete a Sequential Object
model = Sequential()

# Add first layer with 100 neurons to the sequental object
model.add(Dense(100, input_shape = (40, ), activation = 'relu'))

# Add second layer with 100 neurons to the sequental object
model.add(Dense(100, activation = 'relu'))

# Add third layer with 100 neurons to the sequental object
model.add(Dense(100, activation = 'relu'))

# Output layer with 10 neurons as it has 10 classes
model.add(Dense(10, activation = 'softmax'))
In [ ]:
# Print Summary of the model
model.summary()
Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense (Dense)               (None, 100)               4100      
                                                                 
 dense_1 (Dense)             (None, 100)               10100     
                                                                 
 dense_2 (Dense)             (None, 100)               10100     
                                                                 
 dense_3 (Dense)             (None, 10)                1010      
                                                                 
=================================================================
Total params: 25,310
Trainable params: 25,310
Non-trainable params: 0
_________________________________________________________________
In [ ]:
# Compile the model
model.compile(loss = 'sparse_categorical_crossentropy',
              metrics = ['accuracy'],
              optimizer = 'adam')

Model Checkpoint & Training¶

In [ ]:
# Set the number of epochs for training
num_epochs = 100

# Set the batch size for training
batch_size = 32

# Fit the model
model.fit(X_train, Y_train, validation_data = (X_test, Y_test), epochs = num_epochs, batch_size = batch_size, verbose = 1)
Epoch 1/100
118/118 [==============================] - 1s 6ms/step - loss: 4.6833 - accuracy: 0.4021 - val_loss: 0.8707 - val_accuracy: 0.6952
Epoch 2/100
118/118 [==============================] - 0s 3ms/step - loss: 0.6845 - accuracy: 0.7592 - val_loss: 0.3721 - val_accuracy: 0.8824
Epoch 3/100
118/118 [==============================] - 0s 3ms/step - loss: 0.3928 - accuracy: 0.8557 - val_loss: 0.3353 - val_accuracy: 0.8720
Epoch 4/100
118/118 [==============================] - 0s 3ms/step - loss: 0.3252 - accuracy: 0.8848 - val_loss: 0.2370 - val_accuracy: 0.9232
Epoch 5/100
118/118 [==============================] - 0s 3ms/step - loss: 0.2435 - accuracy: 0.9072 - val_loss: 0.3243 - val_accuracy: 0.8808
Epoch 6/100
118/118 [==============================] - 0s 3ms/step - loss: 0.1988 - accuracy: 0.9293 - val_loss: 0.1849 - val_accuracy: 0.9248
Epoch 7/100
118/118 [==============================] - 0s 3ms/step - loss: 0.1380 - accuracy: 0.9507 - val_loss: 0.4215 - val_accuracy: 0.8504
Epoch 8/100
118/118 [==============================] - 0s 3ms/step - loss: 0.1487 - accuracy: 0.9475 - val_loss: 0.2257 - val_accuracy: 0.9296
Epoch 9/100
118/118 [==============================] - 0s 3ms/step - loss: 0.2737 - accuracy: 0.9125 - val_loss: 0.1938 - val_accuracy: 0.9400
Epoch 10/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0915 - accuracy: 0.9669 - val_loss: 0.0733 - val_accuracy: 0.9736
Epoch 11/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0750 - accuracy: 0.9720 - val_loss: 0.1121 - val_accuracy: 0.9584
Epoch 12/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0757 - accuracy: 0.9723 - val_loss: 0.0617 - val_accuracy: 0.9792
Epoch 13/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0625 - accuracy: 0.9813 - val_loss: 0.2596 - val_accuracy: 0.9216
Epoch 14/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0861 - accuracy: 0.9709 - val_loss: 0.1908 - val_accuracy: 0.9328
Epoch 15/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0989 - accuracy: 0.9627 - val_loss: 0.0698 - val_accuracy: 0.9800
Epoch 16/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0546 - accuracy: 0.9824 - val_loss: 0.0694 - val_accuracy: 0.9760
Epoch 17/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0793 - accuracy: 0.9739 - val_loss: 0.0655 - val_accuracy: 0.9776
Epoch 18/100
118/118 [==============================] - 0s 3ms/step - loss: 0.1085 - accuracy: 0.9608 - val_loss: 0.0969 - val_accuracy: 0.9664
Epoch 19/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0799 - accuracy: 0.9723 - val_loss: 0.2657 - val_accuracy: 0.9272
Epoch 20/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0791 - accuracy: 0.9717 - val_loss: 0.1651 - val_accuracy: 0.9504
Epoch 21/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0849 - accuracy: 0.9717 - val_loss: 0.1856 - val_accuracy: 0.9528
Epoch 22/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0668 - accuracy: 0.9736 - val_loss: 0.0856 - val_accuracy: 0.9712
Epoch 23/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0433 - accuracy: 0.9856 - val_loss: 0.0884 - val_accuracy: 0.9712
Epoch 24/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0578 - accuracy: 0.9821 - val_loss: 0.0736 - val_accuracy: 0.9768
Epoch 25/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0967 - accuracy: 0.9680 - val_loss: 0.0993 - val_accuracy: 0.9680
Epoch 26/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0568 - accuracy: 0.9789 - val_loss: 0.0729 - val_accuracy: 0.9752
Epoch 27/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0565 - accuracy: 0.9832 - val_loss: 0.0763 - val_accuracy: 0.9744
Epoch 28/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0373 - accuracy: 0.9856 - val_loss: 0.0511 - val_accuracy: 0.9792
Epoch 29/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0401 - accuracy: 0.9853 - val_loss: 0.0581 - val_accuracy: 0.9760
Epoch 30/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0466 - accuracy: 0.9835 - val_loss: 0.1126 - val_accuracy: 0.9592
Epoch 31/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0635 - accuracy: 0.9787 - val_loss: 0.0500 - val_accuracy: 0.9856
Epoch 32/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0923 - accuracy: 0.9760 - val_loss: 0.0606 - val_accuracy: 0.9784
Epoch 33/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0657 - accuracy: 0.9768 - val_loss: 0.0955 - val_accuracy: 0.9704
Epoch 34/100
118/118 [==============================] - 0s 3ms/step - loss: 0.1111 - accuracy: 0.9651 - val_loss: 0.0628 - val_accuracy: 0.9792
Epoch 35/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0402 - accuracy: 0.9851 - val_loss: 0.1221 - val_accuracy: 0.9560
Epoch 36/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0549 - accuracy: 0.9816 - val_loss: 0.0512 - val_accuracy: 0.9776
Epoch 37/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0379 - accuracy: 0.9872 - val_loss: 0.0474 - val_accuracy: 0.9808
Epoch 38/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0236 - accuracy: 0.9923 - val_loss: 0.0691 - val_accuracy: 0.9752
Epoch 39/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0366 - accuracy: 0.9867 - val_loss: 0.0830 - val_accuracy: 0.9728
Epoch 40/100
118/118 [==============================] - 0s 3ms/step - loss: 0.1293 - accuracy: 0.9635 - val_loss: 0.0582 - val_accuracy: 0.9800
Epoch 41/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0320 - accuracy: 0.9891 - val_loss: 0.0702 - val_accuracy: 0.9776
Epoch 42/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0238 - accuracy: 0.9907 - val_loss: 0.0832 - val_accuracy: 0.9744
Epoch 43/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0224 - accuracy: 0.9915 - val_loss: 0.0565 - val_accuracy: 0.9776
Epoch 44/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0245 - accuracy: 0.9925 - val_loss: 0.0557 - val_accuracy: 0.9760
Epoch 45/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0236 - accuracy: 0.9909 - val_loss: 0.0511 - val_accuracy: 0.9816
Epoch 46/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0169 - accuracy: 0.9947 - val_loss: 0.0391 - val_accuracy: 0.9864
Epoch 47/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0191 - accuracy: 0.9936 - val_loss: 0.2767 - val_accuracy: 0.9472
Epoch 48/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0315 - accuracy: 0.9899 - val_loss: 0.0938 - val_accuracy: 0.9664
Epoch 49/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0375 - accuracy: 0.9875 - val_loss: 0.0644 - val_accuracy: 0.9752
Epoch 50/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0352 - accuracy: 0.9864 - val_loss: 0.0746 - val_accuracy: 0.9776
Epoch 51/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0698 - accuracy: 0.9771 - val_loss: 0.0412 - val_accuracy: 0.9840
Epoch 52/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0392 - accuracy: 0.9864 - val_loss: 0.0902 - val_accuracy: 0.9768
Epoch 53/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0536 - accuracy: 0.9840 - val_loss: 0.1381 - val_accuracy: 0.9552
Epoch 54/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0156 - accuracy: 0.9952 - val_loss: 0.0391 - val_accuracy: 0.9832
Epoch 55/100
118/118 [==============================] - 0s 4ms/step - loss: 0.0184 - accuracy: 0.9933 - val_loss: 0.0676 - val_accuracy: 0.9792
Epoch 56/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0172 - accuracy: 0.9936 - val_loss: 0.1074 - val_accuracy: 0.9712
Epoch 57/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0254 - accuracy: 0.9907 - val_loss: 0.0363 - val_accuracy: 0.9872
Epoch 58/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0144 - accuracy: 0.9955 - val_loss: 0.0398 - val_accuracy: 0.9864
Epoch 59/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0114 - accuracy: 0.9960 - val_loss: 0.0362 - val_accuracy: 0.9856
Epoch 60/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0140 - accuracy: 0.9957 - val_loss: 0.0485 - val_accuracy: 0.9808
Epoch 61/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0210 - accuracy: 0.9933 - val_loss: 0.1248 - val_accuracy: 0.9632
Epoch 62/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0743 - accuracy: 0.9749 - val_loss: 0.3305 - val_accuracy: 0.9264
Epoch 63/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0308 - accuracy: 0.9888 - val_loss: 0.0486 - val_accuracy: 0.9800
Epoch 64/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0126 - accuracy: 0.9949 - val_loss: 0.0558 - val_accuracy: 0.9848
Epoch 65/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0252 - accuracy: 0.9925 - val_loss: 0.0594 - val_accuracy: 0.9840
Epoch 66/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0198 - accuracy: 0.9920 - val_loss: 0.0668 - val_accuracy: 0.9784
Epoch 67/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0187 - accuracy: 0.9923 - val_loss: 0.0554 - val_accuracy: 0.9832
Epoch 68/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0171 - accuracy: 0.9933 - val_loss: 0.0782 - val_accuracy: 0.9792
Epoch 69/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0103 - accuracy: 0.9968 - val_loss: 0.0433 - val_accuracy: 0.9832
Epoch 70/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0084 - accuracy: 0.9973 - val_loss: 0.0397 - val_accuracy: 0.9864
Epoch 71/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0102 - accuracy: 0.9963 - val_loss: 0.0373 - val_accuracy: 0.9856
Epoch 72/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0097 - accuracy: 0.9971 - val_loss: 0.0287 - val_accuracy: 0.9856
Epoch 73/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0044 - accuracy: 0.9981 - val_loss: 0.0339 - val_accuracy: 0.9888
Epoch 74/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0095 - accuracy: 0.9971 - val_loss: 0.0285 - val_accuracy: 0.9872
Epoch 75/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0781 - accuracy: 0.9773 - val_loss: 0.0890 - val_accuracy: 0.9800
Epoch 76/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0194 - accuracy: 0.9939 - val_loss: 0.0726 - val_accuracy: 0.9768
Epoch 77/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0075 - accuracy: 0.9976 - val_loss: 0.0304 - val_accuracy: 0.9888
Epoch 78/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0017 - accuracy: 0.9997 - val_loss: 0.0298 - val_accuracy: 0.9864
Epoch 79/100
118/118 [==============================] - 0s 3ms/step - loss: 6.3725e-04 - accuracy: 1.0000 - val_loss: 0.0393 - val_accuracy: 0.9872
Epoch 80/100
118/118 [==============================] - 0s 3ms/step - loss: 6.6187e-04 - accuracy: 1.0000 - val_loss: 0.0276 - val_accuracy: 0.9880
Epoch 81/100
118/118 [==============================] - 0s 3ms/step - loss: 3.2180e-04 - accuracy: 1.0000 - val_loss: 0.0332 - val_accuracy: 0.9864
Epoch 82/100
118/118 [==============================] - 0s 3ms/step - loss: 3.0186e-04 - accuracy: 1.0000 - val_loss: 0.0280 - val_accuracy: 0.9888
Epoch 83/100
118/118 [==============================] - 0s 3ms/step - loss: 2.6349e-04 - accuracy: 1.0000 - val_loss: 0.0295 - val_accuracy: 0.9872
Epoch 84/100
118/118 [==============================] - 0s 4ms/step - loss: 2.0953e-04 - accuracy: 1.0000 - val_loss: 0.0299 - val_accuracy: 0.9888
Epoch 85/100
118/118 [==============================] - 0s 3ms/step - loss: 1.9458e-04 - accuracy: 1.0000 - val_loss: 0.0259 - val_accuracy: 0.9896
Epoch 86/100
118/118 [==============================] - 0s 3ms/step - loss: 2.2210e-04 - accuracy: 1.0000 - val_loss: 0.0284 - val_accuracy: 0.9880
Epoch 87/100
118/118 [==============================] - 0s 4ms/step - loss: 1.8345e-04 - accuracy: 1.0000 - val_loss: 0.0306 - val_accuracy: 0.9880
Epoch 88/100
118/118 [==============================] - 0s 3ms/step - loss: 1.8389e-04 - accuracy: 1.0000 - val_loss: 0.0294 - val_accuracy: 0.9888
Epoch 89/100
118/118 [==============================] - 0s 3ms/step - loss: 1.4423e-04 - accuracy: 1.0000 - val_loss: 0.0297 - val_accuracy: 0.9888
Epoch 90/100
118/118 [==============================] - 0s 3ms/step - loss: 1.3294e-04 - accuracy: 1.0000 - val_loss: 0.0288 - val_accuracy: 0.9864
Epoch 91/100
118/118 [==============================] - 0s 3ms/step - loss: 1.3376e-04 - accuracy: 1.0000 - val_loss: 0.0313 - val_accuracy: 0.9872
Epoch 92/100
118/118 [==============================] - 0s 3ms/step - loss: 1.2216e-04 - accuracy: 1.0000 - val_loss: 0.0273 - val_accuracy: 0.9888
Epoch 93/100
118/118 [==============================] - 0s 3ms/step - loss: 1.1068e-04 - accuracy: 1.0000 - val_loss: 0.0298 - val_accuracy: 0.9896
Epoch 94/100
118/118 [==============================] - 0s 4ms/step - loss: 1.0460e-04 - accuracy: 1.0000 - val_loss: 0.0291 - val_accuracy: 0.9896
Epoch 95/100
118/118 [==============================] - 0s 3ms/step - loss: 9.4372e-05 - accuracy: 1.0000 - val_loss: 0.0301 - val_accuracy: 0.9896
Epoch 96/100
118/118 [==============================] - 0s 3ms/step - loss: 9.1767e-05 - accuracy: 1.0000 - val_loss: 0.0278 - val_accuracy: 0.9888
Epoch 97/100
118/118 [==============================] - 0s 3ms/step - loss: 8.9083e-05 - accuracy: 1.0000 - val_loss: 0.0275 - val_accuracy: 0.9888
Epoch 98/100
118/118 [==============================] - 0s 3ms/step - loss: 8.1108e-05 - accuracy: 1.0000 - val_loss: 0.0275 - val_accuracy: 0.9888
Epoch 99/100
118/118 [==============================] - 0s 3ms/step - loss: 0.1479 - accuracy: 0.9672 - val_loss: 0.1469 - val_accuracy: 0.9704
Epoch 100/100
118/118 [==============================] - 0s 3ms/step - loss: 0.0488 - accuracy: 0.9837 - val_loss: 0.0607 - val_accuracy: 0.9864
Out[ ]:
<keras.callbacks.History at 0x7f5a7631a350>

Model Evaluation¶

In [ ]:
# Make predictions on the test set
Y_pred = model.predict(X_test)
Y_pred = [np.argmax(i) for i in Y_pred]
In [ ]:
# Set style as dark
sns.set_style("dark")

# Set figure size
plt.figure(figsize = (15, 8))

# Plot the title
plt.title("CONFUSION MATRIX FOR MNIST AUDIO PREDICTION")

# Confusion matrix
cm = confusion_matrix([int(x) for x in Y_test], Y_pred)

# Plot the confusion matrix as heatmap
sns.heatmap(cm, annot = True, cmap = "cool", fmt = 'g', cbar = False)

# Set X-label and Y-label
plt.xlabel("ACTUAL VALUES")
plt.ylabel("PREDICTED VALUES")

# Show the plot
plt.show()

# Print the metrics
print(classification_report(Y_test, Y_pred))
              precision    recall  f1-score   support

           0       0.96      0.97      0.96       117
           1       0.99      0.99      0.99       113
           2       0.94      0.99      0.96       125
           3       1.00      0.92      0.96       116
           4       1.00      0.99      1.00       125
           5       1.00      1.00      1.00       121
           6       1.00      1.00      1.00       132
           7       0.99      1.00      0.99       142
           8       1.00      1.00      1.00       126
           9       0.99      0.99      0.99       133

    accuracy                           0.99      1250
   macro avg       0.99      0.99      0.99      1250
weighted avg       0.99      0.99      0.99      1250

Observations:

  • From the confusion matrix, we can observe that most of the observations are correctly identified by the model.
  • In very few cases, the model is not able to identify the correct digit. For example, 9 observations are 0 but the model has predicted them as 2.
  • The model has given a great performance with 99% recall, precision and F1-score.

Conclusion¶

  • Digit Recognition, being an extremely small subset of the general category of Speech Recognition problems, is simple enough that our Artificial Neural Network is able to achieve almost 100% accuracy.
  • Speech Recognition is a very active area of research, and before the advent of Deep Learning, statistical machine learning methods did not do well on the relatively straight forward problem statement of converting audio recordings of human speech into text.
  • In the industry, Artificial Neural Networks being the simplest type of Deep Learning architecture find very limited use and are mostly utilized only as a modular component of more advanced Deep Learning architectures.
  • However ANNs show their worth on tabular data sets which are highly numerical and high in volume - beyond a certain threshold in terms of number of instances, ANNs are able to learn fine patterns from the data in a way that Ensemble techniques or Support Vector Methods struggle to do so, and this is largely due to the hierarchical arrangement of the neurons in the Neural Network.
  • A digit speech recognition model such as the above may find use in certain applications for voice activated security applications with digit codes, automated telephone operators and the like. However, as always, business considerations such as compute efficiency and model robustness / security are required before such a model can be implemented in real-world settings.