Сравнить коммиты

..

1 Коммитов
main ... main

Автор SHA1 Сообщение Дата
Lipisin 964549a094 Открыта ЛР4
1 неделю назад

@ -7,15 +7,8 @@
1. [Архитектура и обучение глубоких нейронных сетей](labworks/LW1)
2. [Обнаружение аномалий](labworks/LW2)
3. [Распознавание изображений](labworks/LW3)
4. [Распознавание последовательностей](labworks/LW4)
<!--
### Лабораторная работа №4
* [Задание](labworks/LW4/IS_Lab04_2023.pdf)
* [Методические указания](labworks/LW4/IS_Lab04_Metod_2023.pdf)
-->
## Архив материалов курса
В 2021–2022 годах материалы выкладывались <a href="https://uii.bitbucket.io/study/courses/#:~:text=Интеллектуальные%20системы%20(глубокие%20нейронные%20сети)" target="_blank">на этой странице</a>.

Двоичные данные
labworks/LW1/IS_lab_4.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 3.9 KiB

Двоичные данные
labworks/LW1/IS_lab_4_90.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 3.9 KiB

Двоичные данные
labworks/LW1/IS_lab_7.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 854 B

Двоичные данные
labworks/LW1/IS_lab_7_90.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 883 B

Двоичные данные
labworks/LW1/best_model_100.keras

Двоичный файл не отображается.

Двоичные данные
labworks/LW1/images_for_report/1.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 5.6 KiB

Двоичные данные
labworks/LW1/images_for_report/10.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 19 KiB

Двоичные данные
labworks/LW1/images_for_report/11.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 30 KiB

Двоичные данные
labworks/LW1/images_for_report/12.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 20 KiB

Двоичные данные
labworks/LW1/images_for_report/13.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 29 KiB

Двоичные данные
labworks/LW1/images_for_report/14.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 18 KiB

Двоичные данные
labworks/LW1/images_for_report/15.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 18 KiB

Двоичные данные
labworks/LW1/images_for_report/16.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 8.6 KiB

Двоичные данные
labworks/LW1/images_for_report/17.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 8.7 KiB

Двоичные данные
labworks/LW1/images_for_report/18.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 8.9 KiB

Двоичные данные
labworks/LW1/images_for_report/19.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 8.7 KiB

Двоичные данные
labworks/LW1/images_for_report/2.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 13 KiB

Двоичные данные
labworks/LW1/images_for_report/3.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 24 KiB

Двоичные данные
labworks/LW1/images_for_report/4.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 16 KiB

Двоичные данные
labworks/LW1/images_for_report/5.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 28 KiB

Двоичные данные
labworks/LW1/images_for_report/6.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 16 KiB

Двоичные данные
labworks/LW1/images_for_report/7.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 28 KiB

Двоичные данные
labworks/LW1/images_for_report/8.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 16 KiB

Двоичные данные
labworks/LW1/images_for_report/9.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 27 KiB

@ -1,508 +0,0 @@
# Отчёт по лабораторной работе №1
**Кобзев Александр, Кирсанов Егор — А-01-22**
## 1. В среде Google Colab создан новый блокнот. Импортированы необходимые библиотеки и модули.
```python
from google.colab import drive
drive.mount('/content/drive')
```
```python
from tensorflow import keras
import matplotlib.pyplot as plt
import numpy as np
import sklearn
from keras.datasets import mnist
from sklearn.model_selection import train_test_split
from tensorflow.keras.utils import to_categorical
from keras.models import Sequential
from keras.layers import Dense
from PIL import Image
```
---
## 2. Загрузили набора данных MNIST с изображениями рукописных цифр.
```python
(X_train, y_train), (X_test, y_test) = mnist.load_data()
```
---
## 3. Разбили данные на обучающую и тестовую выборки 60 000:10 000.
При объединении исходных выборок и последующем разбиении был использован параметр `random_state = 4*k - 1`, где *k* – номер бригады (k = 10). Такой фиксированный seed обеспечивает воспроизводимость разбиения.
```python
# объединяем исходные обучающие и тестовые данные в один массив
X = np.concatenate((X_train, X_test))
y = np.concatenate((y_train, y_test))
# выполняем разбиение на обучающую (60000) и тестовую (10000) выборки
X_train, X_test, y_train, y_test = train_test_split(
X, y, train_size=60000, test_size=10000, random_state=4*10 - 1
)
# вывод размерностей полученных массивов
print('Shape of X train:', X_train.shape)
print('Shape of y test:', y_test.shape)
```
```
Shape of X train: (60000, 28, 28)
Shape of y train: (60000,)
```
---
## 4. Вывели первые 4 элемента обучающих данных (изображения и метки цифр).
```python
# вывод изображения
fig, axes = plt.subplots(1, 4, figsize=(10, 3))
for i in range(4):
axes[i].imshow(X_train[i], cmap=plt.get_cmap('gray'))
axes[i].set_title(y_train[i])
axes[i].axis('off')
plt.show()
```
![Примеры изображений](images_for_report/1.png)
---
## 5. Провели предобработку данных: привели обучающие и тестовые данные к формату, пригодному для обучения нейронной сети. Входные данные должны принимать значения от 0 до 1, метки цифр должны быть закодированы по принципу «one-hot encoding». Вывели размерности предобработанных обучающих и тестовых массивов данных.
```python
# развернем каждое изображение 28*28 в вектор 784
num_pixels = X_train.shape[1] * X_train.shape[2]
X_train = X_train.reshape(X_train.shape[0], num_pixels) / 255.0
X_test = X_test.reshape(X_test.shape[0], num_pixels) / 255.0
print('Shape of transformed X train:', X_train.shape)
```
```
Shape of transformed X train: (60000, 784)
```
```python
# переведем метки в one-hot
from tensorflow.keras.utils import to_categorical
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
```
```
Shape of transformed y train: (60000, 10)
```
---
## 6. Реализовали и обученили однослойную нейронную сеть.
**Архитектура и параметры:**
- количество скрытых слоёв: 0
- функция активации выходного слоя: `softmax`
- функция ошибки: `categorical_crossentropy`
- алгоритм обучения: `sgd`
- метрика качества: `accuracy`
- количество эпох: 50
- доля валидационных данных от обучающих: 0.1
```python
model = Sequential()
model.add(Dense(units=10, input_dim=num_pixels, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
model.summary()
```
![архитектура модели](images_for_report/2.png)
```python
#обучение
H1 = model.fit(X_train, y_train, batch_size=256, validation_split=0.1, epochs=150)
```
```python
# вывод графика ошибки по эпохам
plt.plot(H1.history['loss'])
plt.plot(H1.history['val_loss'])
plt.grid()
plt.xlabel('Epochs')
plt.ylabel('loss')
plt.legend(['train_loss', 'val_loss'])
plt.title('Loss by epochs')
plt.show()
```
![граффик обучения](images_for_report/3.png)
---
## 7. Применили обученную модель к тестовым данным.
```python
# Оценка качества работы модели на тестовых данных
scores = model.evaluate(X_test, y_test)
print('Loss on test data:', scores[0])
print('Accuracy on test data:', scores[1])
```
```
Loss on test data: 0.32417795062065125
Accuracy on test data: 0.9110999703407288
```
## 8. Добавили в модель один скрытый слой и провели обучение и тестирование (повторить п. 6–7) при 100, 300, 500 нейронах в скрытом слое. По метрике качества классификации на тестовых данных выбрали наилучшее количество нейронов в скрытом слое. В качестве функции активации нейронов в скрытом слое использовали функцию sigmoid.
### При 100 нейронах:
```python
model_100 = Sequential ()
model_100.add(Dense(units=100,input_dim=num_pixels, activation='sigmoid'))
model_100.add(Dense(units=num_classes, activation='softmax'))
model_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
print(model_100.summary())
```
![архитектура модели](images_for_report/4.png)
```python
#обучение
H_100 = model_100.fit(X_train, y_train, batch_size=256, validation_split=0.1, epochs=150)
```
```python
# вывод графика ошибки по эпохам
plt.plot(H_100.history['loss'])
plt.plot(H_100.history['val_loss'])
plt.grid()
plt.xlabel('Epochs')
plt.ylabel('loss')
plt.legend(['train_loss', 'val_loss'])
plt.title('Loss by epochs')
plt.show()
```
![граффик обучения](images_for_report/5.png)
```python
# Оценка качества работы модели на тестовых данных
scores = model_100.evaluate(X_test, y_test)
print('Loss on test data:', scores[0])
print('Accuracy on test data:', scores[1])
```
```
Loss on test data: 0.2998492121696472
Accuracy on test data: 0.9138000011444092
```
### При 300 нейронах:
```python
model_300 = Sequential ()
model_300.add(Dense(units=300,input_dim=num_pixels, activation='sigmoid'))
model_300.add(Dense(units=num_classes, activation='softmax'))
model_300.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
print(model_300.summary())
```
![архитектура модели](images_for_report/6.png)
```python
H_300 = model_300.fit(X_train, y_train, batch_size=256, validation_split=0.1, epochs=150)
```
```python
# вывод графика ошибки по эпохам
plt.plot(H_300.history['loss'])
plt.plot(H_300.history['val_loss'])
plt.grid()
plt.xlabel('Epochs')
plt.ylabel('loss')
plt.legend(['train_loss', 'val_loss'])
plt.title('Loss by epochs')
plt.show()
```
![граффик обучения](images_for_report/7.png)
```python
# Оценка качества работы модели на тестовых данных
scores = model_300.evaluate(X_test, y_test)
print('Loss on test data:', scores[0])
print('Accuracy on test data:', scores[1])
```
```
Loss on test data: 0.31299835443496704
Accuracy on test data: 0.9107999801635742
```
### При 500 нейронах:
```python
model_500 = Sequential()
model_500.add(Dense(units=500, input_dim=num_pixels, activation='sigmoid'))
model_500.add(Dense(units=num_classes, activation='softmax'))
model_500.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
print(model_500.summary())
```
![архитектура модели](images_for_report/8.png)
```python
H_500 = model_500.fit(X_train, y_train, batch_size=256, validation_split=0.1, epochs=150)
```
```python
# вывод графика ошибки по эпохам
plt.plot(H_500.history['loss'])
plt.plot(H_500.history['val_loss'])
plt.grid()
plt.xlabel('Epochs')
plt.ylabel('loss')
plt.legend(['train_loss', 'val_loss'])
plt.title('Loss by epochs')
plt.show()
```
![граффик обучения](images_for_report/9.png)
```python
# Оценка качества работы модели на тестовых данных
scores = model_500.evaluate(X_test, y_test)
print('Loss on test data:', scores[0])
print('Accuracy on test data:', scores[1])
```
```
Loss on test data: 0.31795090436935425
Accuracy on test data: 0.909600019454956
```
Мы видим что лучший результат показала модель со 100 нейронами в скрытом слое(Accuracy = 0.9138).
## 9. Добавили в наилучшую архитектуру, определенную в п. 8, второй скрытый слой и провели обучение и тестирование при 50 и 100 нейронах во втором скрытом слое. В качестве функции активации нейронов в скрытом слое использовали функцию sigmoid.
### При 50 нейронах в 2-м слое:
```python
model_100_50 = Sequential()
model_100_50.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))
model_100_50.add(Dense(units=50, activation='sigmoid'))
model_100_50.add(Dense(units=num_classes, activation='softmax'))
model_100_50.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
print(model_100_50.summary())
```
![архитектура модели](images_for_report/10.png)
```python
H_100_50 = model_100_50.fit(X_train, y_train, batch_size=256, validation_split=0.1, epochs=150)
```
```python
# вывод графика ошибки по эпохам
plt.plot(H_100_50.history['loss'])
plt.plot(H_100_50.history['val_loss'])
plt.grid()
plt.xlabel('Epochs')
plt.ylabel('loss')
plt.legend(['train_loss', 'val_loss'])
plt.title('Loss by epochs')
plt.show()
```
![граффик обучения](images_for_report/11.png)
```python
# Оценка качества работы модели на тестовых данных
scores = model_100_50.evaluate(X_test, y_test)
print('Loss on test data:', scores[0])
print('Accuracy on test data:', scores[1])
```
```
Loss on test data: 0.3216394782066345
Accuracy on test data: 0.9085999727249146
```
### При 100 нейронах во 2-м слое:\
```python
model_100_100 = Sequential()
model_100_100.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))
model_100_100.add(Dense(units=100, activation='sigmoid'))
model_100_100.add(Dense(units=num_classes, activation='softmax'))
model_100_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
print(model_100_100.summary())
```
![архитектура модели](images_for_report/12.png)
```python
H_100_100 = model_100_100.fit(X_train, y_train, batch_size=256, validation_split=0.1, epochs=150)
```
```python
# вывод графика ошибки по эпохам
plt.plot(H_100_100.history['loss'])
plt.plot(H_100_100.history['val_loss'])
plt.grid()
plt.xlabel('Epochs')
plt.ylabel('loss')
plt.legend(['train_loss', 'val_loss'])
plt.title('Loss by epochs')
plt.show()
```
![граффик обучения](images_for_report/13.png)
```python
# Оценка качества работы модели на тестовых данных
scores = model.evaluate(X_test, y_test)
print('Loss on test data:', scores[0])
print('Accuracy on test data:', scores[1])
```
```
Loss on test data: 0.31788304448127747
Accuracy on test data: 0.9128000140190125
```
## 10. Сравнили качество классификации на тестовых данных всех построенных моделей. Сделали выводы.
| Кол-во слоёв | Нейронов в 1-м | Нейронов во 2-м | Accuracy |
|---------------|----------------|-----------------|-----------|
| 0 | – | – | 0.9111 |
| 1 | 100 | – | 0.9138 |
| 1 | 300 | – | 0.9108 |
| 1 | 500 | – | 0.9096 |
| 2 | 100 | 50 | 0.9086 |
| 2 | 100 | 100 | 0.9128 |
**Вывод:** наилучшей оказалась архитектура с одним скрытым слоем и 100 нейронами в нём. Увеличение числа нейронов в скрытом слое или добавление второго слоя не улучшило качество классификации, а в некоторых случаях даже ухудшило его. Вероятно, это связано с переобучением модели из-за избыточного количества параметров при относительно небольшом объёме обучающих данных.
---
## 11. Сохранили наилучшую модель на диск.
```python
model_100.save("/content/drive/MyDrive/Colab Notebooks/best_model_100.keras")
```
---
## 12. Для нейронной сети с наилучшей архитектурой вывели 2 тестовых изображения и истинные метки, а также предсказанные моделью метки.
```python
n = 333
result = model_100.predict(X_test[n:n+1])
print('NNoutput:',result)
plt.imshow(X_test[n].reshape(28,28),cmap=plt.get_cmap('gray'))
plt.show()
print('Realmark:',str(np.argmax(y_test[n])))
print('NNanswer:',str(np.argmax(result)))
```
![Пример 1](images_for_report/14.png)
```python
n = 234
result = model_100.predict(X_test[n:n+1])
print('NNoutput:',result)
plt.imshow(X_test[n].reshape(28,28),cmap=plt.get_cmap('gray'))
plt.show()
print('Realmark:',str(np.argmax(y_test[n])))
print('NNanswer:',str(np.argmax(result)))
```
![Пример 2](images_for_report/15.png)
---
## 13. Создали собственные изображения рукописных цифр, подобное представленным в наборе MNIST. Цифру выбрали как остаток от деления на 10 числа своего дня рождения (14 июля → 14 mod 10 = 4, 7 ноября → 7 mod 10 = 7). Сохранили изображения. Загрузили, предобработали и подали на вход обученной нейронной сети собственные изображения. Вывели изображения и результаты распознавания.
### Для 7:
![Изображение "7"](IS_lab_7.png)
```python
#вывод собственного изображения
plt.imshow(test_img,cmap=plt.get_cmap('gray'))
plt.show()
#предобработка
test_img=test_img/255
test_img=test_img.reshape(1,num_pixels)
#распознавание
result=model_100.predict(test_img)
print('I think it\'s',np.argmax(result))
```
![Отображение "7"](images_for_report/16.png)
### Для 4:
![Мое изображение "4"](IS_lab_4.png)
```python
from PIL import Image
file_data_4=Image.open('/content/drive/MyDrive/Colab Notebooks/IS_lab_4.png')
file_data_4=file_data_4.convert('L')
test_img_4=np.array(file_data_4)
#вывод собственного изображения
plt.imshow(test_img_4,cmap=plt.get_cmap('gray'))
plt.show()
#предобработка
test_img_4=test_img_4/255
test_img_4=test_img_4.reshape(1,num_pixels)
#распознавание
result=model_100.predict(test_img_4)
print('I think it\'s',np.argmax(result))
```
![Отображение "4"](images_for_report/17.png)
---
## 14. Создать копию собственного изображения, отличающуюся от оригинала поворотом на 90 градусов в любую сторону. Сохранили изображения. Загрузили, предобработали и подали на вход обученной нейронной сети измененные изображения. Вывели изображения и результаты распознавания. Сделали выводы по результатам эксперимента.
```python
from PIL import Image
file_data=Image.open('/content/drive/MyDrive/Colab Notebooks/IS_lab_7_90.png')
file_data=file_data.convert('L')
test_img=np.array(file_data)
#вывод собственного изображения
plt.imshow(test_img,cmap=plt.get_cmap('gray'))
plt.show()
#предобработка
test_img=test_img/255
test_img=test_img.reshape(1,num_pixels)
#распознавание
result=model_100.predict(test_img)
print('Ithinkit\'s',np.argmax(result))
```
![Отображение "7 повернутой"](images_for_report/18.png)
```python
from PIL import Image
file_data_4=Image.open('/content/drive/MyDrive/Colab Notebooks/IS_lab_4_90.png')
file_data_4=file_data_4.convert('L')
test_img_4=np.array(file_data_4)
#выводсобственногоизображения
plt.imshow(test_img_4,cmap=plt.get_cmap('gray'))
plt.show()
#предобработка
test_img_4=test_img_4/255
test_img_4=test_img_4.reshape(1,num_pixels)
#распознавание
result=model_100.predict(test_img_4)
print('Ithinkit\'s',np.argmax(result))
```
![Отображение "4 повернутой"](images_for_report/19.png)
**Вывод:** модель неустойчива к повороту изображений, так как не обучалась на повернутых данных.
---
## Заключение
Изучены принципы построения и обучения нейронных сетей в Keras на примере распознавания цифр MNIST. Лучшая точность достигнута простой моделью с одним скрытым слоем из 100 нейронов. При усложнении архитектуры наблюдается переобучение. Сеть корректно классифицирует собственные изображения, но ошибается на повернутых.

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Двоичный файл не отображается.

Разница между файлами не показана из-за своего большого размера Загрузить разницу

@ -1,4 +0,0 @@
10.5 9.5
9.0 10.2
9.6 10.5
9.0 9.0

Двоичные данные
labworks/LW2/images_for_report/1.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 43 KiB

Двоичные данные
labworks/LW2/images_for_report/10.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 21 KiB

Двоичные данные
labworks/LW2/images_for_report/11.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 29 KiB

Двоичные данные
labworks/LW2/images_for_report/12.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 40 KiB

Двоичные данные
labworks/LW2/images_for_report/13.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 22 KiB

Двоичные данные
labworks/LW2/images_for_report/14.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 86 KiB

Двоичные данные
labworks/LW2/images_for_report/15.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 89 KiB

Двоичные данные
labworks/LW2/images_for_report/16.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 70 KiB

Двоичные данные
labworks/LW2/images_for_report/2.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 43 KiB

Двоичные данные
labworks/LW2/images_for_report/3.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 108 KiB

Двоичные данные
labworks/LW2/images_for_report/4.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 34 KiB

Двоичные данные
labworks/LW2/images_for_report/5.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 90 KiB

Двоичные данные
labworks/LW2/images_for_report/6.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 104 KiB

Двоичные данные
labworks/LW2/images_for_report/7.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 32 KiB

Двоичные данные
labworks/LW2/images_for_report/8.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 66 KiB

Двоичные данные
labworks/LW2/images_for_report/9.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 78 KiB

@ -1,100 +0,0 @@
8.0000000e+00 1.1000000e+01 8.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 1.1000000e+01 2.0000000e+00 8.0000000e+00 1.1000000e+01 9.0000000e+00 5.0000000e+00 4.0000000e+00 1.0000000e+01 4.0000000e+00 4.0000000e+00 3.0000000e+00 6.0000000e+00 5.0000000e+00 4.0000000e+00 1.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01 7.0000000e+00 7.0000000e+00 1.2000000e+01 1.0000000e+00 7.0000000e+00 4.0000000e+00 9.0000000e+00
4.0000000e+00 5.0000000e+00 4.0000000e+00 3.0000000e+00 2.0000000e+00 5.0000000e+00 1.1000000e+01 2.0000000e+00 8.0000000e+00 1.1000000e+01 9.0000000e+00 4.0000000e+00 1.0000000e+00 1.1000000e+01 2.0000000e+00 4.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 9.0000000e+00 9.0000000e+00 8.0000000e+00 1.0000000e+01 4.0000000e+00 3.0000000e+00 6.0000000e+00 8.0000000e+00 9.0000000e+00 5.0000000e+00 1.3000000e+01 8.0000000e+00 8.0000000e+00
3.0000000e+00 3.0000000e+00 5.0000000e+00 2.0000000e+00 3.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 5.0000000e+00 2.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 6.0000000e+00 4.0000000e+00 3.0000000e+00 9.0000000e+00 7.0000000e+00 1.0000000e+00 9.0000000e+00 1.0000000e+01 4.0000000e+00 7.0000000e+00 2.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00
2.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 7.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 6.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 1.0000000e+01 7.0000000e+00 6.0000000e+00 5.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 1.0000000e+01 8.0000000e+00 9.0000000e+00
3.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 6.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 5.0000000e+00 2.0000000e+00 7.0000000e+00 9.0000000e+00 1.4000000e+01 9.0000000e+00 8.0000000e+00 6.0000000e+00 3.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 1.0000000e+01 1.1000000e+01 1.2000000e+01 5.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00
4.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 4.0000000e+00 9.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 2.0000000e+00 7.0000000e+00 8.0000000e+00 1.1000000e+01 8.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 1.1000000e+01 2.0000000e+00 8.0000000e+00 1.1000000e+01 9.0000000e+00 5.0000000e+00 4.0000000e+00 1.0000000e+01 4.0000000e+00 4.0000000e+00
2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 1.0000000e+00 6.0000000e+00 1.1000000e+01 2.0000000e+00 7.0000000e+00 1.0000000e+01 9.0000000e+00 5.0000000e+00 1.0000000e+00 1.0000000e+01 2.0000000e+00 5.0000000e+00 6.0000000e+00 1.1000000e+01 6.0000000e+00 6.0000000e+00 3.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 3.0000000e+00 1.3000000e+01 9.0000000e+00 8.0000000e+00 3.0000000e+00 1.0000000e+01 3.0000000e+00 8.0000000e+00
6.0000000e+00 1.0000000e+01 8.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 7.0000000e+00 7.0000000e+00 7.0000000e+00 9.0000000e+00 9.0000000e+00 4.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 5.0000000e+00 1.0000000e+01 4.0000000e+00 5.0000000e+00 3.0000000e+00 9.0000000e+00 5.0000000e+00 4.0000000e+00 3.0000000e+00 9.0000000e+00 4.0000000e+00 5.0000000e+00 4.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00
0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 7.0000000e+00 1.0000000e+01 7.0000000e+00 8.0000000e+00 5.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01 5.0000000e+00 9.0000000e+00 5.0000000e+00 9.0000000e+00 6.0000000e+00 5.0000000e+00
3.0000000e+00 1.0000000e+01 4.0000000e+00 8.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 2.0000000e+00 2.0000000e+00 4.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 1.0000000e+01 1.0000000e+00 7.0000000e+00 7.0000000e+00 1.1000000e+01 8.0000000e+00 1.0000000e+00 1.1000000e+01 2.0000000e+00 8.0000000e+00
4.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 3.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 3.0000000e+00 7.0000000e+00 8.0000000e+00 6.0000000e+00 4.0000000e+00 1.0000000e+01 7.0000000e+00 6.0000000e+00 3.0000000e+00 9.0000000e+00 3.0000000e+00 8.0000000e+00
3.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 2.0000000e+00 8.0000000e+00 6.0000000e+00 1.1000000e+01 1.0000000e+00 6.0000000e+00 9.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 4.0000000e+00 3.0000000e+00 2.0000000e+00 1.0000000e+00 4.0000000e+00 1.1000000e+01 2.0000000e+00 6.0000000e+00 1.1000000e+01 1.0000000e+01 5.0000000e+00 1.0000000e+00 1.1000000e+01 2.0000000e+00 5.0000000e+00
6.0000000e+00 7.0000000e+00 9.0000000e+00 5.0000000e+00 7.0000000e+00 4.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 1.0000000e+01 1.0000000e+01 1.1000000e+01 8.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 4.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 1.0000000e+01 6.0000000e+00 5.0000000e+00 3.0000000e+00 8.0000000e+00 4.0000000e+00 8.0000000e+00
7.0000000e+00 1.5000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 9.0000000e+00 7.0000000e+00 3.0000000e+00 6.0000000e+00 1.3000000e+01 3.0000000e+00 5.0000000e+00 3.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01 5.0000000e+00 6.0000000e+00 6.0000000e+00 8.0000000e+00 9.0000000e+00 9.0000000e+00 8.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01 7.0000000e+00 4.0000000e+00
5.0000000e+00 1.1000000e+01 7.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 9.0000000e+00 9.0000000e+00 5.0000000e+00 4.0000000e+00 6.0000000e+00 6.0000000e+00 9.0000000e+00 3.0000000e+00 7.0000000e+00 8.0000000e+00 6.0000000e+00
5.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 3.0000000e+00 3.0000000e+00 4.0000000e+00 2.0000000e+00 1.0000000e+00 4.0000000e+00 1.3000000e+01 3.0000000e+00 2.0000000e+00 1.0000000e+01 1.1000000e+01 7.0000000e+00 2.0000000e+00 1.1000000e+01 1.0000000e+00 8.0000000e+00
1.0000000e+00 4.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 7.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 5.0000000e+00 1.1000000e+01 6.0000000e+00 3.0000000e+00 4.0000000e+00 9.0000000e+00 3.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00
4.0000000e+00 4.0000000e+00 5.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 1.2000000e+01 1.0000000e+00 7.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 6.0000000e+00 8.0000000e+00 2.0000000e+00 8.0000000e+00 1.1000000e+01 7.0000000e+00 9.0000000e+00 2.0000000e+00 9.0000000e+00 4.0000000e+00 8.0000000e+00
2.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 6.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 2.0000000e+00 5.0000000e+00 4.0000000e+00 3.0000000e+00 3.0000000e+00 9.0000000e+00 6.0000000e+00 3.0000000e+00 5.0000000e+00 1.0000000e+01 4.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 3.0000000e+00 8.0000000e+00
2.0000000e+00 3.0000000e+00 3.0000000e+00 4.0000000e+00 1.0000000e+00 8.0000000e+00 1.4000000e+01 0.0000000e+00 6.0000000e+00 6.0000000e+00 1.1000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 4.0000000e+00 1.1000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 1.0000000e+01 5.0000000e+00 4.0000000e+00 5.0000000e+00 1.4000000e+01 4.0000000e+00 1.0000000e+01 0.0000000e+00 7.0000000e+00 1.0000000e+00 6.0000000e+00
4.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 5.0000000e+00 1.0000000e+01 1.1000000e+01 2.0000000e+00 7.0000000e+00 5.0000000e+00 1.1000000e+01 7.0000000e+00 1.0000000e+00 1.1000000e+01 1.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01 6.0000000e+00 5.0000000e+00 4.0000000e+00 9.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 1.0000000e+01 4.0000000e+00 7.0000000e+00 5.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00
4.0000000e+00 6.0000000e+00 5.0000000e+00 4.0000000e+00 3.0000000e+00 8.0000000e+00 7.0000000e+00 1.2000000e+01 1.0000000e+00 6.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 7.0000000e+00 1.0000000e+01 9.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00 6.0000000e+00 7.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 3.0000000e+00
4.0000000e+00 5.0000000e+00 5.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 1.0000000e+01 4.0000000e+00 5.0000000e+00 8.0000000e+00 7.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 1.1000000e+01 5.0000000e+00 6.0000000e+00 4.0000000e+00 8.0000000e+00 6.0000000e+00 3.0000000e+00 5.0000000e+00 9.0000000e+00 5.0000000e+00 7.0000000e+00 5.0000000e+00 9.0000000e+00 5.0000000e+00 8.0000000e+00
1.0000000e+00 7.0000000e+00 0.0000000e+00 4.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 1.0000000e+00 1.0000000e+00 7.0000000e+00 8.0000000e+00 6.0000000e+00 7.0000000e+00 8.0000000e+00 9.0000000e+00 7.0000000e+00 3.0000000e+00 1.0000000e+01 1.0000000e+00 8.0000000e+00
2.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 1.0000000e+00 7.0000000e+00 1.2000000e+01 0.0000000e+00 5.0000000e+00 7.0000000e+00 1.0000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 5.0000000e+00 1.0000000e+01 6.0000000e+00 7.0000000e+00 5.0000000e+00 9.0000000e+00 8.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 5.0000000e+00 4.0000000e+00 6.0000000e+00 1.0000000e+01 3.0000000e+00 5.0000000e+00
2.0000000e+00 1.0000000e+01 2.0000000e+00 8.0000000e+00 2.0000000e+00 8.0000000e+00 7.0000000e+00 0.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 3.0000000e+00 7.0000000e+00 3.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 2.0000000e+00 8.0000000e+00 7.0000000e+00 8.0000000e+00
7.0000000e+00 1.1000000e+01 1.1000000e+01 8.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 3.0000000e+00 5.0000000e+00 9.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 3.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 3.0000000e+00 6.0000000e+00 9.0000000e+00 7.0000000e+00 3.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00 2.0000000e+00 7.0000000e+00 5.0000000e+00 1.1000000e+01
9.0000000e+00 1.1000000e+01 7.0000000e+00 6.0000000e+00 3.0000000e+00 5.0000000e+00 9.0000000e+00 3.0000000e+00 9.0000000e+00 1.3000000e+01 7.0000000e+00 5.0000000e+00 2.0000000e+00 1.0000000e+01 3.0000000e+00 5.0000000e+00 3.0000000e+00 4.0000000e+00 4.0000000e+00 3.0000000e+00 1.0000000e+00 5.0000000e+00 1.2000000e+01 3.0000000e+00 3.0000000e+00 9.0000000e+00 1.1000000e+01 7.0000000e+00 2.0000000e+00 1.0000000e+01 1.0000000e+00 8.0000000e+00
1.0000000e+00 4.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 7.0000000e+00 8.0000000e+00 0.0000000e+00 7.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 9.0000000e+00 7.0000000e+00 5.0000000e+00 3.0000000e+00 9.0000000e+00 3.0000000e+00 7.0000000e+00 1.1000000e+01 1.2000000e+01 1.2000000e+01 4.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00
6.0000000e+00 1.0000000e+01 8.0000000e+00 8.0000000e+00 7.0000000e+00 9.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 6.0000000e+00 6.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 5.0000000e+00 1.2000000e+01 4.0000000e+00 6.0000000e+00 1.2000000e+01 9.0000000e+00 4.0000000e+00 2.0000000e+00 1.2000000e+01 2.0000000e+00 4.0000000e+00
1.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 0.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 5.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 3.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 1.0000000e+01 2.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00
1.0000000e+00 1.1000000e+01 0.0000000e+00 8.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 4.0000000e+00 1.0000000e+01 5.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 2.0000000e+00 2.0000000e+00 4.0000000e+00 1.0000000e+00 6.0000000e+00 1.0000000e+00 5.0000000e+00
5.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 7.0000000e+00 3.0000000e+00 4.0000000e+00 1.0000000e+01 1.0000000e+01 1.0000000e+01 5.0000000e+00 6.0000000e+00 2.0000000e+00 6.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 4.0000000e+00 3.0000000e+00 9.0000000e+00 5.0000000e+00 8.0000000e+00 5.0000000e+00 9.0000000e+00 1.1000000e+01 1.0000000e+01
4.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 5.0000000e+00 8.0000000e+00 4.0000000e+00 8.0000000e+00 8.0000000e+00 8.0000000e+00 9.0000000e+00 3.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 3.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 1.1000000e+01 1.0000000e+00 8.0000000e+00 5.0000000e+00 1.1000000e+01
3.0000000e+00 5.0000000e+00 5.0000000e+00 6.0000000e+00 1.0000000e+00 8.0000000e+00 1.5000000e+01 1.0000000e+00 5.0000000e+00 7.0000000e+00 1.1000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 6.0000000e+00 2.0000000e+00 4.0000000e+00 2.0000000e+00 3.0000000e+00 8.0000000e+00 5.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 1.3000000e+01 0.0000000e+00 8.0000000e+00 6.0000000e+00 9.0000000e+00
1.0000000e+00 1.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 8.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 5.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 6.0000000e+00 6.0000000e+00 0.0000000e+00 1.0000000e+00 5.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
7.0000000e+00 8.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00 7.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 4.0000000e+00 9.0000000e+00 1.0000000e+01 9.0000000e+00 7.0000000e+00 9.0000000e+00 1.0000000e+01 8.0000000e+00 1.1000000e+01 7.0000000e+00 6.0000000e+00 5.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 1.0000000e+01 8.0000000e+00 8.0000000e+00
5.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 5.0000000e+00 1.1000000e+01 1.0000000e+00 9.0000000e+00 8.0000000e+00 1.1000000e+01 9.0000000e+00 1.0000000e+00 1.0000000e+01 1.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 5.0000000e+00 2.0000000e+00 3.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 6.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00
5.0000000e+00 6.0000000e+00 8.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 2.0000000e+00 5.0000000e+00 9.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 5.0000000e+00 2.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 6.0000000e+00 9.0000000e+00
3.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 4.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 5.0000000e+00 2.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 8.0000000e+00 1.0000000e+01 5.0000000e+00 4.0000000e+00 1.1000000e+01 4.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+01 3.0000000e+00 8.0000000e+00
5.0000000e+00 9.0000000e+00 5.0000000e+00 6.0000000e+00 4.0000000e+00 5.0000000e+00 1.2000000e+01 4.0000000e+00 6.0000000e+00 1.1000000e+01 9.0000000e+00 4.0000000e+00 2.0000000e+00 1.2000000e+01 2.0000000e+00 4.0000000e+00 1.2000000e+01 1.3000000e+01 9.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 9.0000000e+00 6.0000000e+00 4.0000000e+00 1.1000000e+01 4.0000000e+00 5.0000000e+00 5.0000000e+00 9.0000000e+00 5.0000000e+00 8.0000000e+00
5.0000000e+00 9.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 4.0000000e+00 6.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 2.0000000e+00 8.0000000e+00 5.0000000e+00 1.0000000e+01
1.0000000e+00 4.0000000e+00 0.0000000e+00 6.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 1.1000000e+01 1.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
8.0000000e+00 1.3000000e+01 7.0000000e+00 7.0000000e+00 3.0000000e+00 6.0000000e+00 9.0000000e+00 3.0000000e+00 8.0000000e+00 1.3000000e+01 6.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 5.0000000e+00 4.0000000e+00 4.0000000e+00 3.0000000e+00 5.0000000e+00 5.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 1.2000000e+01 1.0000000e+00 7.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00
2.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 1.0000000e+00 9.0000000e+00 1.5000000e+01 1.0000000e+00 5.0000000e+00 6.0000000e+00 1.1000000e+01 9.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 3.0000000e+00 1.0000000e+00 4.0000000e+00 2.0000000e+00 2.0000000e+00 6.0000000e+00 7.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 1.0000000e+01 3.0000000e+00 8.0000000e+00 4.0000000e+00 9.0000000e+00
2.0000000e+00 1.0000000e+01 4.0000000e+00 7.0000000e+00 1.0000000e+00 7.0000000e+00 1.4000000e+01 0.0000000e+00 6.0000000e+00 7.0000000e+00 1.1000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 3.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 4.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 6.0000000e+00 9.0000000e+00
5.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 7.0000000e+00 1.1000000e+01 1.0000000e+01 6.0000000e+00 2.0000000e+00 9.0000000e+00 4.0000000e+00 1.0000000e+01 4.0000000e+00 8.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 1.4000000e+01 2.0000000e+00 5.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
7.0000000e+00 1.0000000e+01 6.0000000e+00 5.0000000e+00 3.0000000e+00 8.0000000e+00 9.0000000e+00 2.0000000e+00 7.0000000e+00 1.1000000e+01 7.0000000e+00 7.0000000e+00 2.0000000e+00 9.0000000e+00 4.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 4.0000000e+00 5.0000000e+00 8.0000000e+00 5.0000000e+00 1.0000000e+00 8.0000000e+00 1.0000000e+01 9.0000000e+00 8.0000000e+00 1.1000000e+01 0.0000000e+00 8.0000000e+00
0.0000000e+00 3.0000000e+00 0.0000000e+00 4.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 7.0000000e+00 8.0000000e+00 5.0000000e+00 2.0000000e+00 7.0000000e+00 8.0000000e+00 1.0000000e+01 2.0000000e+00 9.0000000e+00 4.0000000e+00 8.0000000e+00
0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 9.0000000e+00 7.0000000e+00 2.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 7.0000000e+00 3.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 6.0000000e+00 6.0000000e+00 0.0000000e+00 0.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
5.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 5.0000000e+00 1.1000000e+01 1.0000000e+00 9.0000000e+00 8.0000000e+00 1.1000000e+01 9.0000000e+00 1.0000000e+00 1.0000000e+01 1.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 4.0000000e+00 7.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 1.4000000e+01 2.0000000e+00 5.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
5.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 1.2000000e+01 2.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 4.0000000e+00 7.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 8.0000000e+00 3.0000000e+00 6.0000000e+00 6.0000000e+00 9.0000000e+00
6.0000000e+00 9.0000000e+00 6.0000000e+00 7.0000000e+00 5.0000000e+00 6.0000000e+00 1.1000000e+01 3.0000000e+00 7.0000000e+00 1.1000000e+01 9.0000000e+00 5.0000000e+00 2.0000000e+00 1.2000000e+01 2.0000000e+00 4.0000000e+00 3.0000000e+00 4.0000000e+00 5.0000000e+00 3.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 3.0000000e+00 6.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00
6.0000000e+00 9.0000000e+00 9.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 2.0000000e+00 4.0000000e+00 9.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 7.0000000e+00 2.0000000e+00 8.0000000e+00 2.0000000e+00 3.0000000e+00 4.0000000e+00 2.0000000e+00 2.0000000e+00 7.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 7.0000000e+00 2.0000000e+00 8.0000000e+00 2.0000000e+00 7.0000000e+00 2.0000000e+00 7.0000000e+00
3.0000000e+00 3.0000000e+00 4.0000000e+00 2.0000000e+00 2.0000000e+00 9.0000000e+00 6.0000000e+00 7.0000000e+00 3.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 1.0000000e+00 5.0000000e+00 7.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 6.0000000e+00 1.0000000e+01 4.0000000e+00 3.0000000e+00 8.0000000e+00 7.0000000e+00 7.0000000e+00 9.0000000e+00 1.3000000e+01 3.0000000e+00 4.0000000e+00
4.0000000e+00 4.0000000e+00 6.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+01 6.0000000e+00 3.0000000e+00 4.0000000e+00 9.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 5.0000000e+00 7.0000000e+00 8.0000000e+00 5.0000000e+00 5.0000000e+00 9.0000000e+00 5.0000000e+00 1.0000000e+00 6.0000000e+00 9.0000000e+00 3.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 4.0000000e+00 1.0000000e+01
6.0000000e+00 1.2000000e+01 7.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 8.0000000e+00 4.0000000e+00 1.0000000e+01 8.0000000e+00 1.0000000e+00 2.0000000e+00 8.0000000e+00 8.0000000e+00 1.5000000e+01 1.0000000e+01 8.0000000e+00 5.0000000e+00 1.2000000e+01 5.0000000e+00 2.0000000e+00 5.0000000e+00 1.2000000e+01 3.0000000e+00 7.0000000e+00 5.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00
2.0000000e+00 3.0000000e+00 4.0000000e+00 1.0000000e+00 2.0000000e+00 5.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 1.0000000e+01 1.0000000e+01 1.0000000e+01 4.0000000e+00 7.0000000e+00 1.0000000e+00 7.0000000e+00 3.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 2.0000000e+00 5.0000000e+00 1.2000000e+01 4.0000000e+00 6.0000000e+00 1.2000000e+01 9.0000000e+00 4.0000000e+00 1.0000000e+00 1.0000000e+01 3.0000000e+00 4.0000000e+00
1.0000000e+00 1.0000000e+01 0.0000000e+00 8.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 3.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 3.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 4.0000000e+00 5.0000000e+00 1.0000000e+00 1.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
4.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 5.0000000e+00 8.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 8.0000000e+00 8.0000000e+00 5.0000000e+00 3.0000000e+00 1.0000000e+01 5.0000000e+00 6.0000000e+00 5.0000000e+00 1.0000000e+01 5.0000000e+00 6.0000000e+00
6.0000000e+00 7.0000000e+00 8.0000000e+00 5.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 5.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 8.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 2.0000000e+00 4.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 5.0000000e+00 1.0000000e+01 3.0000000e+00 5.0000000e+00 1.0000000e+01 9.0000000e+00 5.0000000e+00 1.0000000e+00 1.0000000e+01 3.0000000e+00 6.0000000e+00
5.0000000e+00 9.0000000e+00 6.0000000e+00 7.0000000e+00 4.0000000e+00 8.0000000e+00 7.0000000e+00 1.3000000e+01 2.0000000e+00 6.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 3.0000000e+00 5.0000000e+00 4.0000000e+00 5.0000000e+00 3.0000000e+00 8.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 6.0000000e+00 6.0000000e+00 9.0000000e+00 2.0000000e+00 8.0000000e+00 4.0000000e+00 9.0000000e+00
6.0000000e+00 1.0000000e+01 8.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 6.0000000e+00 5.0000000e+00 8.0000000e+00 1.0000000e+01 8.0000000e+00 1.0000000e+01 1.2000000e+01 8.0000000e+00 9.0000000e+00 8.0000000e+00 5.0000000e+00 3.0000000e+00 3.0000000e+00 1.1000000e+01 2.0000000e+00 3.0000000e+00 1.1000000e+01 1.1000000e+01 8.0000000e+00 7.0000000e+00 1.1000000e+01 0.0000000e+00 7.0000000e+00
6.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 3.0000000e+00 6.0000000e+00 1.1000000e+01 2.0000000e+00 9.0000000e+00 1.2000000e+01 9.0000000e+00 4.0000000e+00 1.0000000e+00 1.1000000e+01 3.0000000e+00 4.0000000e+00 4.0000000e+00 2.0000000e+00 5.0000000e+00 4.0000000e+00 4.0000000e+00 9.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 6.0000000e+00
5.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 5.0000000e+00 1.0000000e+01 5.0000000e+00 3.0000000e+00 5.0000000e+00 9.0000000e+00 4.0000000e+00 7.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 9.0000000e+00 3.0000000e+00 6.0000000e+00 5.0000000e+00 4.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 5.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 9.0000000e+00 7.0000000e+00 8.0000000e+00
1.0000000e+00 4.0000000e+00 0.0000000e+00 5.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 7.0000000e+00 3.0000000e+00 4.0000000e+00 0.0000000e+00 7.0000000e+00 1.1000000e+01 1.0000000e+00 3.0000000e+00 8.0000000e+00 1.2000000e+01 8.0000000e+00 1.0000000e+00 1.1000000e+01 0.0000000e+00 8.0000000e+00
4.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 9.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 9.0000000e+00 5.0000000e+00 8.0000000e+00 3.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 1.2000000e+01 2.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+01 2.0000000e+00 9.0000000e+00 2.0000000e+00 6.0000000e+00 4.0000000e+00 8.0000000e+00
2.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 2.0000000e+00 7.0000000e+00 9.0000000e+00 0.0000000e+00 6.0000000e+00 1.3000000e+01 6.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 7.0000000e+00 1.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 5.0000000e+00 8.0000000e+00 4.0000000e+00 5.0000000e+00 1.2000000e+01 8.0000000e+00 1.0000000e+01 1.0000000e+00 1.0000000e+01 2.0000000e+00 8.0000000e+00
8.0000000e+00 1.0000000e+01 8.0000000e+00 8.0000000e+00 6.0000000e+00 7.0000000e+00 1.0000000e+01 2.0000000e+00 8.0000000e+00 1.1000000e+01 9.0000000e+00 5.0000000e+00 3.0000000e+00 1.0000000e+01 5.0000000e+00 4.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 5.0000000e+00 0.0000000e+00 7.0000000e+00 1.0000000e+01 1.0000000e+00 3.0000000e+00 7.0000000e+00 1.2000000e+01 8.0000000e+00 1.0000000e+00 1.1000000e+01 0.0000000e+00 8.0000000e+00
5.0000000e+00 1.0000000e+01 8.0000000e+00 7.0000000e+00 7.0000000e+00 9.0000000e+00 6.0000000e+00 2.0000000e+00 4.0000000e+00 8.0000000e+00 5.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 8.0000000e+00 7.0000000e+00 4.0000000e+00 1.0000000e+00 7.0000000e+00 8.0000000e+00 1.0000000e+01 2.0000000e+00 9.0000000e+00 3.0000000e+00 9.0000000e+00
4.0000000e+00 4.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 6.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 1.0000000e+01 9.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 2.0000000e+00 9.0000000e+00 2.0000000e+00 4.0000000e+00 4.0000000e+00 3.0000000e+00 2.0000000e+00 7.0000000e+00 8.0000000e+00 2.0000000e+00 9.0000000e+00 1.1000000e+01 6.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 5.0000000e+00 7.0000000e+00
3.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.4000000e+01 6.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 1.3000000e+01 7.0000000e+00 2.0000000e+00 1.2000000e+01 5.0000000e+00 2.0000000e+00 1.0000000e+00 1.1000000e+01 4.0000000e+00 8.0000000e+00
4.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00 9.0000000e+00 4.0000000e+00 5.0000000e+00 8.0000000e+00 7.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 3.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 4.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 2.0000000e+00 7.0000000e+00 5.0000000e+00 1.1000000e+01
4.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 8.0000000e+00 1.1000000e+01 7.0000000e+00 3.0000000e+00 4.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 2.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 4.0000000e+00 3.0000000e+00 2.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 6.0000000e+00 9.0000000e+00 2.0000000e+00 9.0000000e+00 4.0000000e+00 9.0000000e+00
4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00 3.0000000e+00 9.0000000e+00 8.0000000e+00 9.0000000e+00 4.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00 5.0000000e+00 8.0000000e+00 1.1000000e+01 5.0000000e+00 1.0000000e+00 5.0000000e+00 8.0000000e+00 1.2000000e+01 2.0000000e+00 1.0000000e+01 5.0000000e+00 8.0000000e+00
1.0000000e+00 1.0000000e+00 1.0000000e+00 2.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 8.0000000e+00 7.0000000e+00 8.0000000e+00 9.0000000e+00 7.0000000e+00 1.0000000e+01 8.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 1.0000000e+01 9.0000000e+00 4.0000000e+00
1.0000000e+00 4.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 7.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 4.0000000e+00 5.0000000e+00 1.1000000e+01 3.0000000e+00 5.0000000e+00 1.3000000e+01 7.0000000e+00 5.0000000e+00 1.0000000e+00 1.0000000e+01 2.0000000e+00 7.0000000e+00
2.0000000e+00 5.0000000e+00 3.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 1.2000000e+01 3.0000000e+00 6.0000000e+00 7.0000000e+00 1.1000000e+01 8.0000000e+00 2.0000000e+00 1.1000000e+01 1.0000000e+00 8.0000000e+00 4.0000000e+00 1.0000000e+01 5.0000000e+00 7.0000000e+00 4.0000000e+00 7.0000000e+00 8.0000000e+00 3.0000000e+00 1.2000000e+01 9.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 8.0000000e+00 7.0000000e+00
1.0000000e+00 4.0000000e+00 3.0000000e+00 2.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 1.0000000e+00 8.0000000e+00 1.4000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 1.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 7.0000000e+00 1.4000000e+01 1.0000000e+00 4.0000000e+00 7.0000000e+00 1.0000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
3.0000000e+00 9.0000000e+00 4.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 1.4000000e+01 6.0000000e+00 9.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 5.0000000e+00 6.0000000e+00 1.1000000e+01 4.0000000e+00 2.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 1.2000000e+01 4.0000000e+00 5.0000000e+00
1.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 3.0000000e+00 8.0000000e+00 7.0000000e+00 2.0000000e+00 4.0000000e+00 8.0000000e+00 5.0000000e+00 5.0000000e+00 3.0000000e+00 9.0000000e+00 4.0000000e+00 5.0000000e+00 5.0000000e+00 1.0000000e+01 6.0000000e+00 9.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 8.0000000e+00 9.0000000e+00 3.0000000e+00 8.0000000e+00 5.0000000e+00 8.0000000e+00
3.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 6.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 3.0000000e+00 9.0000000e+00 4.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00 1.0000000e+01 1.0000000e+00 7.0000000e+00 1.0000000e+01 9.0000000e+00 7.0000000e+00 1.0000000e+00 1.0000000e+01 3.0000000e+00 6.0000000e+00
4.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 7.0000000e+00 9.0000000e+00 3.0000000e+00 1.0000000e+01 6.0000000e+00 7.0000000e+00 3.0000000e+00 9.0000000e+00 4.0000000e+00 7.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 9.0000000e+00 7.0000000e+00
3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 1.0000000e+00 5.0000000e+00 1.2000000e+01 3.0000000e+00 5.0000000e+00 1.1000000e+01 9.0000000e+00 4.0000000e+00 2.0000000e+00 1.1000000e+01 1.0000000e+00 5.0000000e+00 5.0000000e+00 6.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 1.0000000e+01 5.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 4.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00
5.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 5.0000000e+00 4.0000000e+00 1.2000000e+01 5.0000000e+00 5.0000000e+00 1.2000000e+01 9.0000000e+00 4.0000000e+00 2.0000000e+00 1.2000000e+01 1.0000000e+00 5.0000000e+00 7.0000000e+00 1.1000000e+01 7.0000000e+00 8.0000000e+00 4.0000000e+00 3.0000000e+00 1.0000000e+01 2.0000000e+00 7.0000000e+00 1.0000000e+01 1.2000000e+01 6.0000000e+00 1.0000000e+00 1.1000000e+01 2.0000000e+00 5.0000000e+00
3.0000000e+00 1.0000000e+01 4.0000000e+00 8.0000000e+00 3.0000000e+00 7.0000000e+00 9.0000000e+00 0.0000000e+00 7.0000000e+00 1.3000000e+01 6.0000000e+00 7.0000000e+00 0.0000000e+00 9.0000000e+00 2.0000000e+00 7.0000000e+00 3.0000000e+00 3.0000000e+00 4.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 1.4000000e+01 1.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
7.0000000e+00 9.0000000e+00 1.0000000e+01 7.0000000e+00 6.0000000e+00 4.0000000e+00 6.0000000e+00 4.0000000e+00 5.0000000e+00 1.1000000e+01 1.1000000e+01 1.1000000e+01 9.0000000e+00 3.0000000e+00 4.0000000e+00 6.0000000e+00 4.0000000e+00 9.0000000e+00 6.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01
8.0000000e+00 8.0000000e+00 1.1000000e+01 7.0000000e+00 1.2000000e+01 8.0000000e+00 8.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 1.2000000e+01 7.0000000e+00 8.0000000e+00 3.0000000e+00 5.0000000e+00 5.0000000e+00 5.0000000e+00 8.0000000e+00 3.0000000e+00 3.0000000e+00 8.0000000e+00 6.0000000e+00 1.2000000e+01 7.0000000e+00 6.0000000e+00 1.5000000e+01 0.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00
5.0000000e+00 9.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 5.0000000e+00 1.1000000e+01 1.0000000e+00 7.0000000e+00 9.0000000e+00 8.0000000e+00 9.0000000e+00 5.0000000e+00 2.0000000e+00 8.0000000e+00 4.0000000e+00 5.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00 9.0000000e+00 1.0000000e+01
1.0000000e+00 4.0000000e+00 1.0000000e+00 3.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 8.0000000e+00 2.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 3.0000000e+00 6.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 7.0000000e+00 2.0000000e+00 9.0000000e+00 6.0000000e+00 1.0000000e+01
6.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 1.2000000e+01 2.0000000e+00 7.0000000e+00 9.0000000e+00 8.0000000e+00 9.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 4.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 4.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01
5.0000000e+00 9.0000000e+00 4.0000000e+00 5.0000000e+00 2.0000000e+00 8.0000000e+00 8.0000000e+00 3.0000000e+00 6.0000000e+00 1.3000000e+01 4.0000000e+00 6.0000000e+00 1.0000000e+00 7.0000000e+00 4.0000000e+00 9.0000000e+00 3.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 3.0000000e+00 1.1000000e+01 8.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 7.0000000e+00 8.0000000e+00
4.0000000e+00 1.1000000e+01 5.0000000e+00 8.0000000e+00 3.0000000e+00 7.0000000e+00 1.4000000e+01 0.0000000e+00 5.0000000e+00 7.0000000e+00 1.0000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 3.0000000e+00 4.0000000e+00 4.0000000e+00 3.0000000e+00 2.0000000e+00 5.0000000e+00 1.2000000e+01 3.0000000e+00 3.0000000e+00 9.0000000e+00 1.1000000e+01 7.0000000e+00 2.0000000e+00 1.1000000e+01 1.0000000e+00 8.0000000e+00
3.0000000e+00 4.0000000e+00 5.0000000e+00 3.0000000e+00 3.0000000e+00 9.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 9.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 1.0000000e+00 8.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+01 6.0000000e+00 3.0000000e+00 6.0000000e+00 1.2000000e+01 4.0000000e+00 9.0000000e+00 0.0000000e+00 7.0000000e+00 1.0000000e+00 7.0000000e+00
2.0000000e+00 5.0000000e+00 4.0000000e+00 7.0000000e+00 1.0000000e+00 8.0000000e+00 1.4000000e+01 0.0000000e+00 6.0000000e+00 6.0000000e+00 1.1000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 5.0000000e+00 6.0000000e+00 6.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 4.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00
1.0000000e+00 6.0000000e+00 0.0000000e+00 4.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 7.0000000e+00 6.0000000e+00 1.0000000e+01 4.0000000e+00 7.0000000e+00 1.2000000e+01 8.0000000e+00 2.0000000e+00 1.0000000e+01 0.0000000e+00 8.0000000e+00
5.0000000e+00 8.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 9.0000000e+00 5.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 8.0000000e+00 4.0000000e+00 1.3000000e+01 9.0000000e+00 6.0000000e+00 3.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 1.4000000e+01 9.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 8.0000000e+00 8.0000000e+00
4.0000000e+00 9.0000000e+00 4.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 1.0000000e+01 2.0000000e+00 5.0000000e+00 1.3000000e+01 5.0000000e+00 4.0000000e+00 1.0000000e+00 8.0000000e+00 5.0000000e+00 8.0000000e+00 3.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00 3.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 5.0000000e+00 1.0000000e+01 8.0000000e+00 7.0000000e+00 3.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00
6.0000000e+00 1.0000000e+01 6.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 1.1000000e+01 3.0000000e+00 7.0000000e+00 1.1000000e+01 1.0000000e+01 5.0000000e+00 2.0000000e+00 1.2000000e+01 2.0000000e+00 4.0000000e+00 5.0000000e+00 1.1000000e+01 4.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 1.1000000e+01 2.0000000e+00 3.0000000e+00 1.2000000e+01 6.0000000e+00 5.0000000e+00 2.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00
3.0000000e+00 1.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 8.0000000e+00 6.0000000e+00 1.1000000e+01 0.0000000e+00 7.0000000e+00 9.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 3.0000000e+00 9.0000000e+00 5.0000000e+00 6.0000000e+00 1.1000000e+01 1.1000000e+01 9.0000000e+00 3.0000000e+00 9.0000000e+00 1.0000000e+00 7.0000000e+00

Разница между файлами не показана из-за своего большого размера Загрузить разницу

@ -1,474 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "mWA2s-HPT5L9"
},
"outputs": [],
"source": [
"10 % 3"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "8_zCzPa3T_VE"
},
"outputs": [],
"source": [
"from google.colab import drive\n",
"drive.mount('/content/drive')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "hBLeHBeiUOAy"
},
"outputs": [],
"source": [
"import os\n",
"os.chdir('/content/drive/MyDrive/Colab Notebooks/is_lab2')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "dREn2NGEUfIy"
},
"outputs": [],
"source": [
"!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/lab02_lib.py"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "FVyzYbb6Up8S"
},
"outputs": [],
"source": [
"!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/data/letter_train.txt\n",
"!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/data/letter_test.txt\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "QGPmkl3FU2Et"
},
"outputs": [],
"source": [
"# импорт модулей\n",
"import numpy as np\n",
"import lab02_lib as lib\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Hlmf3aY4dbg6"
},
"source": [
"2. Сгенерировать индивидуальный набор двумерных данных в пространстве\n",
"признаков с координатами центра (k, k), где k – номер бригады. Вывести\n",
"полученные данные на рисунок и в консоль.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "r7gSmNgWdXo2"
},
"outputs": [],
"source": [
"k = 10\n",
"data = lib.datagen(k, k, 1000, 2)\n",
"print('Размерность данных:', data.shape)\n",
"print('Пример данных:', data)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Na7tT2TReMcu"
},
"source": [
"3-4. Создать и обучить автокодировщик AE1 простой архитектуры, выбрав\n",
"небольшое количество эпох обучения. Зафиксировать в таблице вида\n",
"табл.1 количество скрытых слоёв и нейронов в них.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "emmU0JGJeOVD"
},
"outputs": [],
"source": [
"# AE1 — простая сеть, меньше эпох\n",
"patience = 300\n",
"ae1_trained, IRE1, IREth1 = lib.create_fit_save_ae(\n",
" data, 'out/AE1.h5', 'out/AE1_ire_th.txt',\n",
" 1000, False, patience, verbose_every_n_epochs = 100, early_stopping_delta = 0.001\n",
")\n",
"lib.ire_plot('training', IRE1, IREth1, 'AE1')\n",
"print('AE1 IREth =', IREth1)\n",
"\n",
"#1\n",
"#1"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1Pu38Xylsvjr"
},
"source": [
"5-6. Создать и обучить второй автокодировщик AE2 с усложненной\n",
"архитектурой, задав большее количество эпох обучения.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "CToPhfVgs4Ya"
},
"outputs": [],
"source": [
"# AE2 — более сложная сеть, больше эпох\n",
"ae2_trained, IRE2, IREth2 = lib.create_fit_save_ae(\n",
" data, 'out/AE2.h5', 'out/AE2_ire_th.txt',\n",
" 3000, False, patience, verbose_every_n_epochs = 500, early_stopping_delta = 0.001\n",
")\n",
"lib.ire_plot('training', IRE2, IREth2, 'AE2')\n",
"print('AE2 IREth =', IREth2)\n",
"\n",
"# 5 3 2 3 5"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aiMYnnw5ybt2"
},
"source": [
"8. Рассчитать характеристики качества обучения EDCA для AE1 и AE2.\n",
"Визуализировать и сравнить области пространства признаков,\n",
"распознаваемые автокодировщиками AE1 и AE2. Сделать вывод о\n",
"пригодности AE1 и AE2 для качественного обнаружения аномалий."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "N6F98jegybGj"
},
"outputs": [],
"source": [
"#AE1\n",
"numb_square = 20\n",
"xx, yy, Z1 = lib.square_calc(numb_square, data, ae1_trained, IREth1, '1', True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Rc5-WXjC9rAk"
},
"outputs": [],
"source": [
"#AE2\n",
"numb_square = 20\n",
"xx, yy, Z2 = lib.square_calc(numb_square, data, ae2_trained, IREth2, '2', True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "id6lkBOi9y1v"
},
"outputs": [],
"source": [
"#Сравнение\n",
"lib.plot2in1(data, xx, yy, Z1, Z2)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "NZRB1Vg1y0ta"
},
"source": [
"9. Изучить сохраненный набор данных и пространство признаков. Создать\n",
"тестовую выборку, состоящую, как минимум, из 4ёх элементов, не\n",
"входящих в обучающую выборку. Элементы должны быть такими, чтобы\n",
"AE1 распознавал их как норму, а AE2 детектировал как аномалии."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "on7YZMauy4ZS"
},
"outputs": [],
"source": [
"with open('data_test.txt', 'w') as file:\n",
" file.write(\"10.5 9.5\\n\")\n",
" file.write(\"9.0 10.2\\n\")\n",
" file.write(\"9.6 10.5\\n\")\n",
" file.write(\"9.0 9.0\\n\")\n",
"data_test = np.loadtxt('data_test.txt', dtype=float)\n",
"print(data_test)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "8FuMOxLu_wVZ"
},
"outputs": [],
"source": [
"data_test = np.loadtxt('data_test.txt', dtype=float)\n",
"print(data_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "cib_DiqazAWM"
},
"source": [
"10. Применить обученные автокодировщики AE1 и AE2 к тестовым данным\n",
"и вывести значения ошибки реконструкции для каждого элемента тестовой\n",
"выборки относительно порога на график и в консоль."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "IprWT-m4zDR1"
},
"outputs": [],
"source": [
"# AE1\n",
"predicted_labels1, ire1 = lib.predict_ae(ae1_trained, data_test, IREth1)\n",
"lib.anomaly_detection_ae(predicted_labels1, ire1, IREth1)\n",
"lib.ire_plot('test', ire1, IREth1, 'AE1')\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "3jD3wEhr5f6t"
},
"outputs": [],
"source": [
"# AE2\n",
"predicted_labels2, ire2 = lib.predict_ae(ae2_trained, data_test, IREth2)\n",
"lib.anomaly_detection_ae(predicted_labels2, ire2, IREth2)\n",
"lib.ire_plot('test', ire2, IREth2, 'AE2')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "67myAxUazRQ1"
},
"source": [
"11. Визуализировать элементы обучающей и тестовой выборки в областях\n",
"пространства признаков, распознаваемых автокодировщиками AE1 и AE2."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "jzFhJTrNzS4A"
},
"outputs": [],
"source": [
"lib.plot2in1_anomaly(data, xx, yy, Z1, Z2, data_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hpP0MebIzZFi"
},
"source": [
"12-13 таблицы и выводы\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "RF2lQ2NMzdIZ"
},
"source": [
"Часть 2\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "R_YSpxv0zj0W"
},
"source": [
"2. Загрузить многомерную обучающую выборку реальных данных\n",
"name_train.txt."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "XRZI769HzjMQ"
},
"outputs": [],
"source": [
"train = np.loadtxt('letter_train.txt', dtype=float)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "sDimn5kIzvff"
},
"source": [
"3. Вывести полученные данные и их размерность в консоли."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "dbb7jXUjzzNT"
},
"outputs": [],
"source": [
"print('train.shape =', train.shape)\n",
"print('Пример train:', train)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "cCoweu23z4sx"
},
"source": [
"4-6. Создать и обучить автокодировщик с подходящей для данных\n",
"архитектурой. Выбрать необходимое количество эпох обучения"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "mqiCTs1H0HL5"
},
"outputs": [],
"source": [
"patience = 5000\n",
"ae3_trained, IRE3, IREth3 = lib.create_fit_save_ae(\n",
" train, 'out/AE3.h5', 'out/AE3_ire_th.txt',\n",
" 100000, False, patience, verbose_every_n_epochs = 1000, early_stopping_delta = 0.001, early_stopping_value = 0.01\n",
")\n",
"\n",
"\n",
"# 32 16 12 8 7 8 12 16 32\n",
"\n",
"# 30 24 19 15 11 15 19 24 30\n",
"\n",
"# 28 21 16 12 9 12 16 21 28\n",
"# 32 26 22 18 15 12 15 18 22 26 32\n",
"# 35 28 21 14 7 14 21 28 35"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "S-bT1nnDckWS"
},
"outputs": [],
"source": [
"lib.ire_plot('training', IRE3, IREth3, 'AE3')\n",
"print('AE3 IREth =', IREth3)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "HUoWlB7T4lPH"
},
"source": [
"8. Подать тестовую выборку на вход обученного автокодировщика для\n",
"обнаружения аномалий. Вывести график ошибки реконструкции\n",
"элементов тестовой выборки относительно порога."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "m9o31pOLG5IR"
},
"outputs": [],
"source": [
"test = np.loadtxt('letter_test.txt', dtype=float)\n",
"print('test.shape =', test.shape)\n",
"print('Пример train:', test)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "gyGWxfCt4jT5"
},
"outputs": [],
"source": [
"predicted_labels3, ire3 = lib.predict_ae(ae3_trained, test, IREth3)\n",
"lib.anomaly_detection_ae(predicted_labels3, ire3, IREth3)\n",
"lib.ire_plot('test', ire3, IREth3, 'AE3')"
]
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"authorship_tag": "ABX9TyP7I3xYtv8vwrxTVttwH659",
"gpuType": "T4",
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
}

Двоичные данные
labworks/LW2/out/AE1.h5

Двоичный файл не отображается.

Двоичные данные
labworks/LW2/out/AE1_AE2_train_def.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 21 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 23 KiB

Двоичные данные
labworks/LW2/out/AE1_train_def.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 37 KiB

Двоичные данные
labworks/LW2/out/AE2.h5

Двоичный файл не отображается.

Двоичные данные
labworks/LW2/out/AE2_train_def.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 34 KiB

Двоичные данные
labworks/LW2/out/AE3.h5

Двоичный файл не отображается.

Двоичные данные
labworks/LW2/out/IRE_testAE1.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 31 KiB

Двоичные данные
labworks/LW2/out/IRE_testAE2.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 42 KiB

Двоичные данные
labworks/LW2/out/IRE_testAE3.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 73 KiB

Двоичные данные
labworks/LW2/out/IRE_trainingAE1.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 45 KiB

Двоичные данные
labworks/LW2/out/IRE_trainingAE2.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 111 KiB

Двоичные данные
labworks/LW2/out/IRE_trainingAE3.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 92 KiB

Двоичные данные
labworks/LW2/out/XtXd_1.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 96 KiB

Двоичные данные
labworks/LW2/out/XtXd_1_metrics.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 107 KiB

Двоичные данные
labworks/LW2/out/XtXd_2.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 69 KiB

Двоичные данные
labworks/LW2/out/XtXd_2_metrics.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 82 KiB

@ -1,5 +0,0 @@
------------Оценка качества AE2 С ПОМОЩЬЮ НОВЫХ МЕТРИК------------
Approx = 0.36
Excess = 1.7777777777777777
Deficit = 0.0
Coating = 1.0

Двоичные данные
labworks/LW2/out/train_set.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 46 KiB

@ -1,471 +0,0 @@
# Отчёт по лабораторной работе №2
**Кобзев Александр, Кирсанов Егор — А-01-22**
## 1.1. В среде Google Colab создали новый блокнот (notebook). Импортировали необходимые для работы библиотеки и модули.
```python
from google.colab import drive
drive.mount('/content/drive')
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks/is_lab2')
```
```
!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/lab02_lib.py
!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/data/letter_train.txt
!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/data/letter_test.txt
```
``` python
# импорт модулей
import numpy as np
import lab02_lib as lib
```
---
## 1.2. Сгенерировали индивидуальный набор двумерных данных в пространстве признаков с координатами центра (k, k), где k=10 – номер бригады. Вывели полученные данные на рисунок и в консоль:
```python
k = 10
data = lib.datagen(k, k, 1000, 2)
print('Размерность данных:', data.shape)
print('Пример данных:', data)
```
![Данные](images_for_report/1.png)
```
Размерность данных: (1000, 2)
Пример данных: [[ 9.91598657 9.75579359]
[ 9.97948747 9.98708802]
[ 9.99042489 10.01396366]
...
[ 9.97013826 9.93047258]
[10.00891654 9.94318369]
[10.04614761 9.91592173]]
```
---
## 1.3. Создали и обучили автокодировщик AE1 простой архитектуры, выбрав небольшое количество эпох обучения.
```python
patience = 300
ae1_trained, IRE1, IREth1 = lib.create_fit_save_ae(
data, 'out/AE1.h5', 'out/AE1_ire_th.txt',
1000, False, patience, verbose_every_n_epochs = 100, early_stopping_delta = 0.001
)
```
---
## 1.4. Зафиксировали ошибку MSE, на которой обучение завершилось. Построили график ошибки реконструкции обучающей выборки. Зафиксировали порог ошибки реконструкции – порог обнаружения аномалий.
MSE = 56.8932
```python
lib.ire_plot('training', IRE1, IREth1, 'AE1')
print('AE1 IREth =', IREth1)
```
![График ошибки реконструкции обучающей выборки](images_for_report/2.png)
```
Порог ошибки реконструкции:
AE1 IREth = 10.98
```
---
## 1.5. Создали и обучили второй автокодировщик AE2 с усложненной архитектурой, задав большее количество эпох обучения.
```python
ae2_trained, IRE2, IREth2 = lib.create_fit_save_ae(
data, 'out/AE2.h5', 'out/AE2_ire_th.txt',
3000, False, patience, verbose_every_n_epochs = 500, early_stopping_delta = 0.001
)
```
---
## 1.6. Зафиксировали ошибку MSE, на которой обучение завершилось. Построили график ошибки реконструкции обучающей выборки. Зафиксировали порог ошибки реконструкции – порог обнаружения аномалий.
MSE = 0.0225
```python
lib.ire_plot('training', IRE2, IREth2, 'AE2')
print('AE2 IREth =', IREth2)
```
![График ошибки реконструкции обучающей выборки](images_for_report/3.png)
```
Порог ошибки реконструкции:
AE2 IREth = 0.55
```
---
## 1.7. Рассчитали характеристики качества обучения EDCA для AE1 и AE2. Визуализировали и сравнить области пространства признаков, распознаваемые автокодировщиками AE1 и AE2. Сделать вывод о пригодности AE1 и AE2 для качественного обнаружения аномалий.
```python
# AE1
numb_square = 20
xx, yy, Z1 = lib.square_calc(numb_square, data, ae1_trained, IREth1, '1', True)
```
![Грфик](images_for_report/4.png)
```
amount: 18
amount_ae: 293
```
![Грфик](images_for_report/5.png)
![Грфик](images_for_report/6.png)
```
Оценка качества AE1
IDEAL = 0. Excess: 15.277777777777779
IDEAL = 0. Deficit: 0.0
IDEAL = 1. Coating: 1.0
summa: 1.0
IDEAL = 1. Extrapolation precision (Approx): 0.06143344709897611
```
```python
# AE2
numb_square = 20
xx, yy, Z2 = lib.square_calc(numb_square, data, ae2_trained, IREth2, '2', True)
```
![Грфик](images_for_report/7.png)
```
amount: 18
amount_ae: 50
```
![Грфик](images_for_report/8.png)
![Грфик](images_for_report/9.png)
```
Оценка качества AE2
IDEAL = 0. Excess: 1.7777777777777777
IDEAL = 0. Deficit: 0.0
IDEAL = 1. Coating: 1.0
summa: 1.0
IDEAL = 1. Extrapolation precision (Approx): 0.36
```
```python
# Сравнение
lib.plot2in1(data, xx, yy, Z1, Z2)
```
![Грфик](images_for_report/10.png)
---
## 1.8. Если автокодировщик AE2 недостаточно точно аппроксимирует область обучающих данных, то подобрать подходящие параметры автокодировщика и повторить шаги (6) – (8).
Немного изменили параметры автокодировщика AE2 для более качесвенной аппроксимации(использовались выше)
---
## 1.9. Изучили сохраненный набор данных и пространство признаков. Создали тестовую выборку, состоящую, как минимум, из 4ёх элементов, не входящих в обучающую выборку. Элементы должны быть такими, чтобы AE1 распознавал их как норму, а AE2 детектировал как аномалии.
```python
with open('data_test.txt', 'w') as file:
file.write("10.5 9.5\n")
file.write("9.0 10.2\n")
file.write("9.6 10.5\n")
file.write("9.0 9.0\n")
data_test = np.loadtxt('data_test.txt', dtype=float)
print(data_test)
```
```
[[10.5 9.5]
[ 9. 10.2]
[ 9.6 10.5]
[ 9. 9. ]]
```
---
## 1.10. Применили обученные автокодировщики AE1 и AE2 к тестовым данным и вывели значения ошибки реконструкции для каждого элемента тестовой выборки относительно порога на график и в консоль.
```python
# AE1
predicted_labels1, ire1 = lib.predict_ae(ae1_trained, data_test, IREth1)
lib.anomaly_detection_ae(predicted_labels1, ire1, IREth1)
lib.ire_plot('test', ire1, IREth1, 'AE1')
```
```
Аномалий не обнаружено
```
![Грфик](images_for_report/11.png)
```python
# AE2
predicted_labels2, ire2 = lib.predict_ae(ae2_trained, data_test, IREth2)
lib.anomaly_detection_ae(predicted_labels2, ire2, IREth2)
lib.ire_plot('test', ire2, IREth2, 'AE2')
```
```
i Labels IRE IREth
0 [1.] [0.62] 0.55
1 [1.] [1.05] 0.55
2 [1.] [0.77] 0.55
3 [1.] [1.29] 0.55
Обнаружено 4.0 аномалий
```
![Грфик](images_for_report/12.png)
---
## 1.11. Визуализирывали элементы обучающей и тестовой выборки в областях пространства признаков, распознаваемых автокодировщиками AE1 и AE2.
```python
lib.plot2in1_anomaly(data, xx, yy, Z1, Z2, data_test)
```
![Грфик](images_for_report/13.png)
---
## 1.12. Результаты исследования занесли в таблицу:
<table>
<thead>
<tr>
<th> </th>
<th>Количество скрытых слоёв</th>
<th>Количество нейронов в скрытых слоях</th>
<th>Количество эпох обучения</th>
<th>Ошибка MSE_stop</th>
<th>Порог ошибки реконструкции</th>
<th>Значение показателя Excess</th>
<th>Значение показателя Approx</th>
<th>Количество обнаруженных аномалий</th>
</tr>
</thead>
<tbody>
<tr>
<td>АЕ1</td>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">1000</td>
<td align="center">56.89</td>
<td align="center">10.98</td>
<td align="center">15.28</td>
<td align="center">0.06</td>
<td align="center">0</td>
</tr>
<tr>
<td>АЕ2</td>
<td align="center">5</td>
<td align="center">5 3 2 3 5</td>
<td align="center">3000</td>
<td align="center">0.02</td>
<td align="center">0.55</td>
<td align="center">1.78</td>
<td align="center">0.36</td>
<td align="center">4</td>
</tr>
</tbody>
</table>
---
## 1.13. Сделали выводы о требованиях к:
- данным для обучения,
- архитектуре автокодировщика,
- количеству эпох обучения,
- ошибке MSE_stop, приемлемой для останова обучения,
- ошибке реконструкции обучающей выборки (порогу обнаружения аномалий),
- характеристикам качества обучения EDCA одноклассового классификатора
для качественного обнаружения аномалий в данных.
- Данные для обучения: должны содержать только нормальные примеры без выбросов и полно описывать область нормы.
- Архитектура автокодировщика: симметричная, с узким «бутылочным горлышком»
- Количество эпох: достаточно большое, чтобы сеть обучилась, но без переобучения, в для нашего набора оптимально окло 3000.
- Ошибка MSE_stop: должна быть небольшой, но не меньше 0.01 , дабы избежать переобучение.
- Порог ошибки реконструкции: выбирается по максимуму IRE обучающей выборки; высокий порог → пропуски аномалий.
- Характеристики EDCA: хорошая модель имеет низкий Excess, высокий Approx ≈ 1; такие модели точнее очерчивают область нормы и лучше детектируют аномалии.
---
## 2.1. Изучили описание своего набора реальных данных
Набор Letter Recognition предназначен для распознавания букв английского алфавита по 16 числовым признакам, описывающим изображение буквы.
Для задачи обнаружения аномалий из исходных данных выделены три буквы, формирующие нормальный класс, а для аномалий — случайные буквы, не входящие в нормальный класс.
Чтобы усложнить задачу, данные объединены попарно, в результате чего размерность увеличена до 32 признаков. Таким образом, каждый аномальный пример частично содержит признаки нормального класса, что делает задачу более сложной для автокодировщика.
| Количество признаков | Количество примеров | Количество нормальных примеров | Количество аномальных примеров |
| ----- | ----- | ------ | ----- |
| **32** | **1600** | **1500** | **100** |
---
## 2.2. Загрузили многомерную обучающую выборку реальных данных name_train.txt.
```python
train = np.loadtxt('letter_train.txt', dtype=float)
```
---
## 2.3. Вывели полученные данные и их размерность в консоли.
```python
print('train.shape =', train.shape)
print('Пример train:', train)
```
```
train.shape = (1500, 32)
Пример train: [[ 6. 10. 5. ... 10. 2. 7.]
[ 0. 6. 0. ... 8. 1. 7.]
[ 4. 7. 5. ... 8. 2. 8.]
...
[ 7. 10. 10. ... 8. 5. 6.]
[ 7. 7. 10. ... 6. 0. 8.]
[ 3. 4. 5. ... 9. 5. 5.]]
```
---
## 2.4. Cоздали и обучили автокодировщик с подходящей для данных архитектурой.
```python
patience = 5000
ae3_trained, IRE3, IREth3 = lib.create_fit_save_ae(
train, 'out/AE3.h5', 'out/AE3_ire_th.txt',
100000, False, patience, verbose_every_n_epochs = 5000, early_stopping_delta = 0.001
)
```
---
## 2.5. Зафиксирывали ошибку MSE, на которой обучение завершилось. Построили график ошибки реконструкции обучающей выборки. Зафиксирывали порог ошибки реконструкции – порог обнаружения аномалий.
MSE = 0.4862
```python
lib.ire_plot('training', IRE3, IREth3, 'AE3')
print('AE3 IREth =', IREth3)
```
![Грфик](images_for_report/14.png)
```
Порог ошибки реконструкции:
AE3 IREth = 10.75
```
---
## 2.6. Сделать вывод о пригодности обученного автокодировщика для качественного обнаружения аномалий. Если порог ошибки реконструкции слишком велик, то подобрать подходящие параметры автокодировщика и повторить шаги (4) – (6).
### Очент высокий порог, так что попробуем другю структуру:
MSE = 0.3363
```python
lib.ire_plot('training', IRE3, IREth3, 'AE3')
print('AE3 IREth =', IREth3)
```
![Грфик](images_for_report/15.png)
```
Порог ошибки реконструкции:
AE3 IREth = 6.75
```
Отсановимся на этой модели
---
## 2.7. Изучили и загрузили тестовую выборку letter_test.txt.
```python
test = np.loadtxt('letter_test.txt', dtype=float)
print('test.shape =', test.shape)
print('Пример train:', test)
```
```
test.shape = (100, 32)
Пример train: [[ 8. 11. 8. ... 7. 4. 9.]
[ 4. 5. 4. ... 13. 8. 8.]
[ 3. 3. 5. ... 8. 3. 8.]
...
[ 4. 9. 4. ... 8. 3. 8.]
[ 6. 10. 6. ... 9. 8. 8.]
[ 3. 1. 3. ... 9. 1. 7.]]
```
---
## 2.8. Подали тестовую выборку на вход обученного автокодировщика для обнаружения аномалий. Вывели график ошибки реконструкции элементов тестовой выборки относительно порога.
```python
predicted_labels3_v1, ire3_v1 = lib.predict_ae(ae3_v1_trained, test, IREth3_v1)
lib.ire_plot('test', ire3_v1, IREth3_v1, 'AE3_v1')
```
```
i Labels IRE IREth
0 [1.] [9.78] 6.75
1 [1.] [8.92] 6.75
2 [1.] [14.27] 6.75
...
99 [1.] [15.66] 6.75
Обнаружено 91.0 аномалий
```
![Грфик](images_for_report/16.png)
---
## 2.9. Если результаты обнаружения аномалий не удовлетворительные (обнаружено менее 70% аномалий), то подобрать подходящие параметры автокодировщика и повторить шаги (4) – (9).
Результаты приемлемы
---
## 2.10. Параметры наилучшего автокодировщика и результаты обнаружения аномалий занести в таблицу:
| Dataset name | Кол-во скрытых слоёв | Кол-во нейронов в скрытых слоях | Кол-во эпох обучения | Ошибка MSE_stop | Порог ошибки реконструкции |% обнаруженных аномалий |
| --- | --- | --- | --- | --- | --- | --- |
| Letter | 9 | 35 28 21 14 7 14 21 28 35 | 100000 | 0.3363 | 6.75 | 91% |
---
## 2.11. Сделать выводы о требованиях к:
- данным для обучения,
- архитектуре автокодировщика,
- количеству эпох обучения,
- ошибке MSE_stop, приемлемой для останова обучения,
- ошибке реконструкции обучающей выборки (порогу обнаруженияаномалий)
для качественного обнаружения аномалий в случае, когда размерность
пространства признаков высока.
- Данные для обучения: должны содержать только нормальные объекты(отсутсвие аномалий).
- Архитектура автокодировщика: симметричная, 9 скрытых слоёв с наличием бутылочного горлышка
- Количество эпох: около 100 000 достаточно для стабилизации ошибки и точного восстановления данных.
- Ошибка MSE_stop: практика показала, что 0.34 — приемлемое значение для высокоразмерного набора Letter.
- Качество обнаружения: 91 % аномалий — модель адекватно аппроксимирует область нормы и надёжно выделяет отклонения.

@ -0,0 +1,7 @@
## Лабораторныа работа №4
## Распознавание последовательностей
* [Задание](IS_Lab04_2023.pdf)
* [Методические указания](IS_Lab04_Metod_2023.pdf)
Загрузка…
Отмена
Сохранить