Сравнить коммиты
4 Коммитов
| Автор | SHA1 | Дата |
|---|---|---|
|
|
964549a094 | 2 недель назад |
|
|
b344e76a21 | 1 месяц назад |
|
|
047d249b1f | 2 месяцев назад |
|
|
339fe963d0 | 2 месяцев назад |
|
До Ширина: | Высота: | Размер: 7.1 KiB |
|
До Ширина: | Высота: | Размер: 292 B |
|
До Ширина: | Высота: | Размер: 358 B |
|
До Ширина: | Высота: | Размер: 7.1 KiB |
|
До Ширина: | Высота: | Размер: 1.1 KiB |
|
До Ширина: | Высота: | Размер: 1.2 KiB |
|
До Ширина: | Высота: | Размер: 6.7 KiB |
|
До Ширина: | Высота: | Размер: 7.1 KiB |
|
До Ширина: | Высота: | Размер: 29 KiB |
|
До Ширина: | Высота: | Размер: 29 KiB |
|
До Ширина: | Высота: | Размер: 29 KiB |
|
До Ширина: | Высота: | Размер: 30 KiB |
|
До Ширина: | Высота: | Размер: 30 KiB |
|
До Ширина: | Высота: | Размер: 32 KiB |
|
До Ширина: | Высота: | Размер: 16 KiB |
|
До Ширина: | Высота: | Размер: 20 KiB |
|
До Ширина: | Высота: | Размер: 21 KiB |
|
До Ширина: | Высота: | Размер: 21 KiB |
|
До Ширина: | Высота: | Размер: 24 KiB |
|
До Ширина: | Высота: | Размер: 24 KiB |
@ -1,4 +1,11 @@
|
|||||||
* [Задание](IS_Lab01_2023.pdf)
|
## Лабораторныа работа №1
|
||||||
|
|
||||||
|
## Архитектура и обучение глубоких нейронных сетей
|
||||||
|
|
||||||
|
* [Задание](IS_Lab01_2023.pdf)
|
||||||
|
|
||||||
* [Методические указания](IS_Lab01_Metod_2023.pdf)
|
* [Методические указания](IS_Lab01_Metod_2023.pdf)
|
||||||
|
|
||||||
* <a href="https://youtube.com/playlist?list=PLfdZ2TeaMzfzlpZ60rbaYU_epH5XPNbWU" target="_blank"><s>Какие нейроны, что вообще происходит?</s> Рекомендуется к просмотру для понимания (4 видео)</a>
|
* <a href="https://youtube.com/playlist?list=PLfdZ2TeaMzfzlpZ60rbaYU_epH5XPNbWU" target="_blank"><s>Какие нейроны, что вообще происходит?</s> Рекомендуется к просмотру для понимания (4 видео)</a>
|
||||||
|
|
||||||
* <a href="https://www.youtube.com/watch?v=FwFduRA_L6Q" target="_blank">Почувствуйте себя пионером нейронных сетей в области распознавания образов</a>
|
* <a href="https://www.youtube.com/watch?v=FwFduRA_L6Q" target="_blank">Почувствуйте себя пионером нейронных сетей в области распознавания образов</a>
|
||||||
|
До Ширина: | Высота: | Размер: 7.1 KiB |
|
До Ширина: | Высота: | Размер: 6.9 KiB |
@ -1,503 +0,0 @@
|
|||||||
# Отчет по лабораторной работе №1
|
|
||||||
Юсуфов Юнус,Романов Мирон , А-01-22
|
|
||||||
|
|
||||||
## 1. В среде GoogleColab создали блокнот. Импортировали все нужные модули для работы
|
|
||||||
```
|
|
||||||
from tensorflow import keras
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
import numpy as np
|
|
||||||
import sklearn
|
|
||||||
from tensorflow.keras.utils import to_categorical
|
|
||||||
from keras.models import Sequential
|
|
||||||
from keras.layers import Dense
|
|
||||||
```
|
|
||||||
|
|
||||||
## 2. Загрузили датасет MNIST, содержащий рукописные цифры
|
|
||||||
```
|
|
||||||
from keras.datasets import mnist
|
|
||||||
(X_train, y_train), (X_test, y_test) = mnist.load_data()
|
|
||||||
```
|
|
||||||
|
|
||||||
## 3. Разбили набор данных на обучающие и тестовые выборки
|
|
||||||
```
|
|
||||||
from sklearn.model_selection import train_test_split
|
|
||||||
```
|
|
||||||
* объединили в один набор
|
|
||||||
```
|
|
||||||
X = np.concatenate((X_train, X_test))
|
|
||||||
y = np.concatenate((y_train, y_test))
|
|
||||||
```
|
|
||||||
* разбили по вариантам
|
|
||||||
```
|
|
||||||
X_train, X_test, y_train, y_test = train_test_split(X, y,test_size = 10000,train_size = 60000, random_state = 35)
|
|
||||||
```
|
|
||||||
|
|
||||||
* Вывели размерности
|
|
||||||
```
|
|
||||||
print('Shape of X train:', X_train.shape)
|
|
||||||
print('Shape of y train:', y_train.shape)
|
|
||||||
```
|
|
||||||
|
|
||||||
> Shape of X train: (60000, 28, 28)
|
|
||||||
> Shape of y train: (60000,)
|
|
||||||
|
|
||||||
## 4. Вывод элементов обучающих данных
|
|
||||||
* Вывел 4-е элемента выборки
|
|
||||||
```
|
|
||||||
print(y_train[0])
|
|
||||||
plt.imshow(X_train[0], cmap=plt.get_cmap('gray'))
|
|
||||||
plt.show()
|
|
||||||
|
|
||||||
print(y_train[1])
|
|
||||||
plt.imshow(X_train[1], cmap=plt.get_cmap('gray'))
|
|
||||||
plt.show()
|
|
||||||
|
|
||||||
print(y_train[2])
|
|
||||||
plt.imshow(X_train[2], cmap=plt.get_cmap('gray'))
|
|
||||||
plt.show()
|
|
||||||
|
|
||||||
print(y_train[3])
|
|
||||||
plt.imshow(X_train[3], cmap=plt.get_cmap('gray'))
|
|
||||||
plt.show()
|
|
||||||
```
|
|
||||||
0
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
9
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
7
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
5
|
|
||||||
|
|
||||||

|
|
||||||
## 5. Предобработка данных
|
|
||||||
* развернули каждое изображение 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
|
|
||||||
X_test = X_test.reshape(X_test.shape[0], num_pixels) / 255
|
|
||||||
|
|
||||||
print('Shape of transformed X train:', X_train.shape)
|
|
||||||
```
|
|
||||||
|
|
||||||
> Shape of transformed X train: (60000, 784)
|
|
||||||
|
|
||||||
* перевели метки в one-hot
|
|
||||||
```
|
|
||||||
from keras.utils import to_categorical
|
|
||||||
y_train = to_categorical(y_train)
|
|
||||||
y_test = to_categorical(y_test)
|
|
||||||
|
|
||||||
print('Shape of transformed y train:', y_train.shape)
|
|
||||||
|
|
||||||
num_classes = y_train.shape[1]
|
|
||||||
```
|
|
||||||
|
|
||||||
> Shape of transformed y train: (60000, 10)
|
|
||||||
|
|
||||||
## 6. Реализация и обучение однослойной нейронной сети
|
|
||||||
* 6.1.Создали модель, объявиил ее объектом класса Sequential и скомпилировали.
|
|
||||||
```
|
|
||||||
model_p = Sequential()
|
|
||||||
model_p.add(Dense(units=num_classes,input_dim=num_pixels, activation='softmax'))
|
|
||||||
model_p.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
|
||||||
```
|
|
||||||
* 6.2. Вывели архитектуру модели
|
|
||||||
```
|
|
||||||
model_p.summary()
|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
* Обучил модель
|
|
||||||
```
|
|
||||||
H_p = model_p.fit(X_train, y_train,batch_size = 512, validation_split=0.1, epochs=200)
|
|
||||||
```
|
|
||||||
|
|
||||||
* Вывели график функции ошибок
|
|
||||||
```
|
|
||||||
plt.plot(H_p.history['loss'])
|
|
||||||
plt.plot(H_p.history['val_loss'])
|
|
||||||
plt.grid()
|
|
||||||
plt.xlabel('Epochs')
|
|
||||||
plt.ylabel('loss')
|
|
||||||
plt.legend(['train_loss','val_loss'])
|
|
||||||
plt.title('Loss by epochs')
|
|
||||||
plt.show()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 7. Примененили модели к тестовым данным
|
|
||||||
```
|
|
||||||
scores=model_p.evaluate(X_test,y_test);
|
|
||||||
print('Loss on test data:',scores[0]);
|
|
||||||
print('Accuracy on test data:',scores[1])
|
|
||||||
```
|
|
||||||
|
|
||||||
> accuracy: 0.9178 - loss: 0.2926
|
|
||||||
>Loss on test data: 0.3017258942127228
|
|
||||||
>Accuracy on test data: 0.9168999791145325
|
|
||||||
|
|
||||||
## 8. Добавили один скрытый слой и повторил п. 6-7
|
|
||||||
* при 100 нейронах в скрытом слое
|
|
||||||
```
|
|
||||||
model_2l_100 = Sequential()
|
|
||||||
model_2l_100.add(Dense(units=100,input_dim=num_pixels, activation='sigmoid'))
|
|
||||||
model_2l_100.add(Dense(units=num_classes, activation='softmax'))
|
|
||||||
model_2l_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
|
||||||
model_2l_100.summary()
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* Обучили модель
|
|
||||||
```
|
|
||||||
H_2l_100=model_2l_100.fit(X_train,y_train,batch_size =512, validation_split=0.1,epochs=200)
|
|
||||||
```
|
|
||||||
|
|
||||||
* Вывели график функции ошибки
|
|
||||||
```
|
|
||||||
plt.plot(H_2l_100.history['loss'])
|
|
||||||
plt.plot(H_2l_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()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
```
|
|
||||||
scores=model_2l_100.evaluate(X_test,y_test);
|
|
||||||
|
|
||||||
print('Loss on test data:',scores[0]);
|
|
||||||
print('Accuracy on test data:',scores[1])
|
|
||||||
```
|
|
||||||
|
|
||||||
> accuracy: 0.9166 - loss: 0.3003
|
|
||||||
>Loss on test data: 0.30692651867866516
|
|
||||||
>Accuracy on test data: 0.9154999852180481
|
|
||||||
|
|
||||||
* при 300 нейронах в скрытом слое
|
|
||||||
```
|
|
||||||
model_2l_300 = Sequential()
|
|
||||||
model_2l_300.add(Dense(units=300,input_dim=num_pixels, activation='sigmoid'))
|
|
||||||
model_2l_300.add(Dense(units=num_classes, activation='softmax'))
|
|
||||||
model_2l_300.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
|
||||||
model_2l_300.summary()
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* Обучили модель
|
|
||||||
```
|
|
||||||
H_2l_300=model_2l_300.fit(X_train,y_train,batch_size = 512,validation_split=0.1,epochs=200)
|
|
||||||
```
|
|
||||||
|
|
||||||
* Вывели график функции ошибки
|
|
||||||
```
|
|
||||||
plt.plot(H_2l_300.history['loss'])
|
|
||||||
plt.plot(H_2l_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()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
```
|
|
||||||
scores=model_2l_300.evaluate(X_test,y_test);
|
|
||||||
|
|
||||||
print('Loss on test data:',scores[0]);
|
|
||||||
print('Accuracy on test data:',scores[1])
|
|
||||||
```
|
|
||||||
|
|
||||||
> - accuracy: 0.9155 - loss: 0.3049
|
|
||||||
>Loss on test data: 0.3119920790195465
|
|
||||||
>Accuracy on test data: 0.9139000177383423
|
|
||||||
|
|
||||||
* при 500 нейронах в скрытом слое
|
|
||||||
```
|
|
||||||
model_2l_500 = Sequential()
|
|
||||||
model_2l_500.add(Dense(units=500,input_dim=num_pixels, activation='sigmoid'))
|
|
||||||
model_2l_500.add(Dense(units=num_classes, activation='softmax'))
|
|
||||||
model_2l_500.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
|
||||||
model_2l_500.summary()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* Обучаем модель
|
|
||||||
```
|
|
||||||
H_2l_500=model_2l_500.fit(X_train,y_train,batch_size = 512,validation_split=0.1,epochs=200)
|
|
||||||
```
|
|
||||||
|
|
||||||
* Выводим график функции ошибки
|
|
||||||
```
|
|
||||||
plt.plot(H_2l_500.history['loss'])
|
|
||||||
plt.plot(H_2l_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()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
```
|
|
||||||
scores=model_2l_500.evaluate(X_test,y_test);
|
|
||||||
|
|
||||||
print('Loss on test data:',scores[0]);
|
|
||||||
print('Accuracy on test data:',scores[1])
|
|
||||||
```
|
|
||||||
|
|
||||||
> accuracy: 0.9138 - loss: 0.3062
|
|
||||||
>Loss on test data: 0.3137015998363495
|
|
||||||
>Accuracy on test data: 0.9122999906539917
|
|
||||||
|
|
||||||
Наилучший результат получился у ИНС с 100 нейронами в скрытом слое (0.9154999852180481). В следующих пунктах будем строить 3-х слойную сеть на основе этой конфигурации.
|
|
||||||
|
|
||||||
## 9. Добавление второго скрытого слоя
|
|
||||||
* при 50 нейронах во втором скрытом слое
|
|
||||||
```
|
|
||||||
model_3l_100_50 = Sequential()
|
|
||||||
model_3l_100_50.add(Dense(units=100,input_dim=num_pixels, activation='sigmoid'))
|
|
||||||
model_3l_100_50.add(Dense(units=50, activation='sigmoid'))
|
|
||||||
model_3l_100_50.add(Dense(units=num_classes, activation='softmax'))
|
|
||||||
model_3l_100_50.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
|
||||||
model_3l_100_50.summary()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* Обучили модель
|
|
||||||
```
|
|
||||||
H_3l_100_50=model_3l_100_50.fit(X_train,y_train,batch_size = 512,validation_split=0.1,epochs=200)
|
|
||||||
```
|
|
||||||
|
|
||||||
* Вывели график функции ошибки
|
|
||||||
```
|
|
||||||
plt.plot(H_3l_100_50.history['loss'])
|
|
||||||
plt.plot(H_3l_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()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
```
|
|
||||||
scores=model_3l_100_50.evaluate(X_test,y_test);
|
|
||||||
print('Loss on test data:',scores[0]);
|
|
||||||
print('Accuracy on test data:',scores[1])
|
|
||||||
```
|
|
||||||
|
|
||||||
> - accuracy: 0.9067 - loss: 0.3484
|
|
||||||
>Loss on test data: 0.3573007583618164
|
|
||||||
>Accuracy on test data: 0.9021999835968018
|
|
||||||
|
|
||||||
* при 100 нейронах во втором скрытом слое
|
|
||||||
```
|
|
||||||
model_3l_100_100 = Sequential()
|
|
||||||
model_3l_100_100.add(Dense(units=100,input_dim=num_pixels, activation='sigmoid'))
|
|
||||||
model_3l_100_100.add(Dense(units=100, activation='sigmoid'))
|
|
||||||
model_3l_100_100.add(Dense(units=num_classes, activation='softmax'))
|
|
||||||
model_3l_100_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
|
||||||
model_3l_100_100.summary()
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* Обучили модель
|
|
||||||
```
|
|
||||||
H_3l_100_100=model_3l_100_100.fit(X_train,y_train,batch_size = 512,validation_split=0.1,epochs=200)
|
|
||||||
```
|
|
||||||
|
|
||||||
* Вывели график функции ошибки
|
|
||||||
```
|
|
||||||
plt.plot(H_3l_100_100.history['loss'])
|
|
||||||
plt.plot(H_3l_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()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
```
|
|
||||||
scores=model_3l_100_100.evaluate(X_test,y_test);
|
|
||||||
print('Loss on test data:',scores[0]);
|
|
||||||
print('Accuracy on test data:',scores[1])
|
|
||||||
```
|
|
||||||
|
|
||||||
> accuracy: 0.9062 - loss: 0.3420
|
|
||||||
>Loss on test data: 0.35140201449394226
|
|
||||||
>Accuracy on test data: 0.9049000144004822
|
|
||||||
|
|
||||||
| Кол-во слоёв | Нейронов в 1-м | Нейронов во 2-м | Accuracy |
|
|
||||||
|---------------|----------------|-----------------|-----|
|
|
||||||
| 0 | – | – | 0.9151999950408936 |
|
|
||||||
| 1 | 100 | – | 0.9154999852180481 |
|
|
||||||
| 1 | 300 | – | 0.9139000177383423 |
|
|
||||||
| 1 | 500 | – | 0.9122999906539917 |
|
|
||||||
| 2 | 100 | 50 | 0.9021999835968018 |
|
|
||||||
| 2 | 100 | 100 | 0.9049000144004822 |
|
|
||||||
|
|
||||||
По значениям метрики качества классификации можно увидеть, что лучше всего справилась двухслойная сеть с 100 нейронами в скрытом слое. Наращивание кол-во слоев и кол-во нейронов в них не привели к желаемому росту значения метрики качества, а наоборот ухудшили ее. Вероятно связано это с тем, что для более мощных архитектур нужно увеличить обучающую выборку, чем есть сейчас у нас, иначе это приводит к переобучению сети.
|
|
||||||
|
|
||||||
## 11. Сохранение наилучшей модели на диск
|
|
||||||
```
|
|
||||||
model_2l_100.save(filepath='best_model_2l_100_LR1.keras')
|
|
||||||
```
|
|
||||||
|
|
||||||
## 12. Вывод тестовых изображений и результатов распознаваний
|
|
||||||
```
|
|
||||||
n = 70
|
|
||||||
result = model_2l_100.predict(X_test[n:n+1])
|
|
||||||
print('NN output:', result)
|
|
||||||
|
|
||||||
plt.imshow(X_test[n].reshape(28,28), cmap=plt.get_cmap('gray'))
|
|
||||||
plt.show()
|
|
||||||
print('Real mark: ', str(np.argmax(y_test[n])))
|
|
||||||
print('NN answer: ', str(np.argmax(result)))
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
>Real mark: 2
|
|
||||||
>NN answer: 2
|
|
||||||
|
|
||||||
```
|
|
||||||
n = 888
|
|
||||||
result = model_2l_100.predict(X_test[n:n+1])
|
|
||||||
print('NN output:', result)
|
|
||||||
|
|
||||||
plt.imshow(X_test[n].reshape(28,28), cmap=plt.get_cmap('gray'))
|
|
||||||
plt.show()
|
|
||||||
print('Real mark: ', str(np.argmax(y_test[n])))
|
|
||||||
print('NN answer: ', str(np.argmax(result)))
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
>Real mark: 6
|
|
||||||
>NN answer: 6
|
|
||||||
|
|
||||||
## 12. Тестирование на собственных изображениях
|
|
||||||
* загрузили 1-ое собственное изображения
|
|
||||||
```
|
|
||||||
from PIL import Image
|
|
||||||
file_1_data = Image.open('6.png')
|
|
||||||
file_1_data = file_1_data.convert('L') #перевод в градации серого
|
|
||||||
test_1_img = np.array(file_1_data)
|
|
||||||
```
|
|
||||||
|
|
||||||
* вывели собственное изображения
|
|
||||||
```
|
|
||||||
plt.imshow(test_1_img, cmap=plt.get_cmap('gray'))
|
|
||||||
plt.show())
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* предобработка
|
|
||||||
```
|
|
||||||
test_1_img = test_1_img / 255
|
|
||||||
test_1_img = test_1_img.reshape(1, num_pixels)
|
|
||||||
```
|
|
||||||
|
|
||||||
* распознавание
|
|
||||||
```
|
|
||||||
result_1 = model_2l_100.predict(test_1_img)
|
|
||||||
print('I think it\'s', np.argmax(result_1))
|
|
||||||
```
|
|
||||||
> I think it's 6
|
|
||||||
|
|
||||||
* тест на 2-ом изображении
|
|
||||||
```
|
|
||||||
file_2_data = Image.open('2.png')
|
|
||||||
file_2_data = file_2_data.convert('L') #перевод в градации серого
|
|
||||||
test_2_img = np.array(file_2_data)
|
|
||||||
plt.imshow(test_2_img, cmap=plt.get_cmap('gray'))
|
|
||||||
plt.show()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
```
|
|
||||||
test_2_img = test_2_img / 255
|
|
||||||
test_2_img = test_2_img.reshape(1, num_pixels)
|
|
||||||
|
|
||||||
result_2 = model.predict(test_2_img)
|
|
||||||
print('I think it\'s', np.argmax(result_2))
|
|
||||||
```
|
|
||||||
|
|
||||||
> I think it's 2
|
|
||||||
|
|
||||||
Сеть корректно распознала обе цифры
|
|
||||||
|
|
||||||
## 14. Тестирование на собственных повернутых изображениях
|
|
||||||
```
|
|
||||||
file_3_data = Image.open('6_90.png')
|
|
||||||
file_3_data = file_3_data.convert('L') #перевод в градации серого
|
|
||||||
test_3_img = np.array(file_3_data)
|
|
||||||
|
|
||||||
plt.imshow(test_3_img, cmap=plt.get_cmap('gray'))
|
|
||||||
plt.show()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
```
|
|
||||||
test_3_img = test_3_img / 255
|
|
||||||
test_3_img = test_3_img.reshape(1, num_pixels)
|
|
||||||
result_3 = model_2l_100.predict(test_3_img)
|
|
||||||
|
|
||||||
print('I think it\'s', np.argmax(result_3))
|
|
||||||
```
|
|
||||||
|
|
||||||
> I think it's 9
|
|
||||||
|
|
||||||
```
|
|
||||||
file_4_data = Image.open('2_90.png')
|
|
||||||
file_4_data = file_4_data.convert('L') #перевод в градации серого
|
|
||||||
test_4_img = np.array(file_4_data)
|
|
||||||
|
|
||||||
plt.imshow(test_4_img, cmap=plt.get_cmap('gray'))
|
|
||||||
plt.show()
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
```
|
|
||||||
test_4_img = test_4_img / 255
|
|
||||||
test_4_img = test_4_img.reshape(1, num_pixels)
|
|
||||||
result_4 = model_2l_100.predict(test_4_img)
|
|
||||||
|
|
||||||
print('I think it\'s', np.argmax(result_4))
|
|
||||||
```
|
|
||||||
|
|
||||||
> I think it's 5
|
|
||||||
|
|
||||||
Сеть не смогла распознать ни одну из перевернутых изображений.Связано это с тем, что мы не использовали при обучении перевернутые изображения.
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
8.1 8.5
|
|
||||||
7.2 8.0
|
|
||||||
9.0 8.0
|
|
||||||
8.5 9.5
|
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
## Лабораторныа работа №2
|
||||||
|
|
||||||
|
## Обнаружение аномалий
|
||||||
|
|
||||||
|
* [Задание](IS_Lab02_2023.pdf)
|
||||||
|
|
||||||
|
* [Методические указания](IS_Lab02_Metod_2023.pdf)
|
||||||
|
|
||||||
|
* [Наборы данных](data)
|
||||||
|
|
||||||
|
* [Библиотека для автокодировщиков](lab02_lib.py)
|
||||||
|
До Ширина: | Высота: | Размер: 94 KiB |
|
До Ширина: | Высота: | Размер: 105 KiB |
|
До Ширина: | Высота: | Размер: 20 KiB |
|
До Ширина: | Высота: | Размер: 21 KiB |
|
До Ширина: | Высота: | Размер: 33 KiB |
|
До Ширина: | Высота: | Размер: 34 KiB |
|
До Ширина: | Высота: | Размер: 55 KiB |
|
До Ширина: | Высота: | Размер: 64 KiB |
|
До Ширина: | Высота: | Размер: 73 KiB |
|
До Ширина: | Высота: | Размер: 31 KiB |
|
До Ширина: | Высота: | Размер: 40 KiB |
|
До Ширина: | Высота: | Размер: 102 KiB |
|
До Ширина: | Высота: | Размер: 57 KiB |
|
До Ширина: | Высота: | Размер: 84 KiB |
@ -1,109 +0,0 @@
|
|||||||
2.165463900000000053e-01 -6.546517800000000165e-01 -2.036404900000000073e-01 2.034008599999999944e+00 2.385968699999999831e+00 -6.140064399999999728e-02 3.200971200000000128e+00 -1.112015200000000092e+00 5.159934400000000032e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 2.015500100000000128e+00 -1.439841399999999938e+00 1.964730400000000099e+00 2.786245700000000158e-01 3.865805400000000169e+00 -3.606048100000000201e+00 -1.658481099999999930e+00 -2.044421400000000055e+00 4.987466999999999651e+00 -4.932939700000000260e-01
|
|
||||||
2.165463900000000053e-01 -5.653378999999999488e-01 -2.036404900000000073e-01 2.778793499999999916e+00 2.051602599999999832e+00 -6.140064399999999728e-02 4.372112699999999741e+00 -9.325388300000000408e-01 5.623183000000000042e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 2.015500100000000128e+00 -1.439841399999999938e+00 1.964730400000000099e+00 6.226310299999999742e-01 3.865805400000000169e+00 -3.906626000000000154e+00 -1.658481099999999930e+00 -2.113388699999999787e+00 6.490482000000000085e+00 -4.932939700000000260e-01
|
|
||||||
-3.125388000000000055e-01 -9.199884400000000184e-01 6.965369199999999594e+00 -7.104097199999999390e-02 4.354484899999999659e-02 -6.140064399999999728e-02 5.285028299999999568e+00 -8.727133700000000438e-01 7.590724599999999489e-01 -4.204873499999999820e-01 4.874045800000000039e-02 1.433020200000000077e+00 -1.297293599999999936e+00 9.747052600000000178e-01 3.030676300000000101e+00 -4.882788900000000210e-01 -4.199225699999999950e-01 -1.850025400000000042e+00 -1.147847099999999898e+00 3.918656299999999870e+00 -4.932939700000000260e-01
|
|
||||||
-4.183558299999999841e-01 -9.199884400000000184e-01 6.834588300000000061e+00 -5.695920399999999661e-01 3.073559799999999731e-01 -6.140064399999999728e-02 4.776187700000000369e+00 -6.334115099999999554e-01 1.222321100000000049e+00 -4.204873499999999820e-01 -7.172275099999999570e-01 1.883118300000000023e+00 -1.297293599999999936e+00 1.909729000000000010e+00 2.342663400000000173e+00 9.630825400000000425e-01 -3.666163699999999803e+00 -2.169265799999999800e+00 -2.389257699999999929e+00 4.252659600000000317e+00 -2.126605500000000148e+00
|
|
||||||
-9.474410199999999671e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 8.098599499999999951e-01 7.405433699999999786e-02 -6.140064399999999728e-02 3.586204599999999854e+00 -1.112015200000000092e+00 3.306939900000000154e+00 -4.204873499999999820e-01 1.904085100000000086e+00 1.909594599999999920e+00 -1.439841399999999938e+00 1.744724799999999965e+00 1.310643999999999920e+00 9.630825400000000425e-01 -6.002693000000000056e-01 -1.786177300000000079e+00 -1.630617900000000065e+00 3.217249300000000201e+00 -4.932939700000000260e-01
|
|
||||||
4.912314699999999895e-03 -9.199884400000000184e-01 6.242462399999999967e+00 -3.778152200000000072e-01 4.855851999999999946e-01 -6.140064399999999728e-02 5.685267299999999580e+00 -5.735860400000000192e-01 1.453945400000000054e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.883118300000000023e+00 -1.297293599999999936e+00 1.909729000000000010e+00 1.654650399999999966e+00 2.414444000000000035e+00 -3.666163699999999803e+00 -2.743898600000000076e+00 -4.044471800000000172e+00 2.783044900000000155e+00 -2.126605500000000148e+00
|
|
||||||
4.912314699999999895e-03 -9.199884400000000184e-01 6.078098400000000012e+00 -9.221169799999999750e-01 -2.026570700000000086e-02 -6.140064399999999728e-02 6.488522699999999865e+00 -4.539351099999999750e-01 9.906967700000000043e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 9.829221200000000103e-01 -1.297293599999999936e+00 3.968151000000000317e-02 2.786245700000000158e-01 9.630825400000000425e-01 -3.666163699999999803e+00 -2.935442800000000130e+00 -4.113439099999999904e+00 2.181838899999999803e+00 -2.126605500000000148e+00
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 7.394861299999999638e+00 -1.786230199999999935e-01 -6.446275900000000315e-03 -6.140064399999999728e-02 3.175601499999999966e+00 -1.590619000000000005e+00 1.453945400000000054e+00 -4.204873499999999820e-01 2.261536800000000014e+00 8.770166900000000432e-01 -8.340133899999999656e-01 5.346940799999999605e-01 -6.538189499999999543e-02 -4.882788900000000210e-01 -1.261540600000000012e+00 -8.284559599999999913e-01 -1.078879900000000003e+00 9.126262600000000225e-01 -4.932939700000000260e-01
|
|
||||||
-1.009047200000000033e-01 -7.090911399999999531e-01 7.585824800000000145e+00 -4.691003599999999940e-01 4.007486699999999735e-01 -6.140064399999999728e-02 2.487126700000000135e+00 -9.325388300000000408e-01 6.432603000000000071e-01 -4.204873499999999820e-01 -1.934558299999999953e-02 9.829221200000000103e-01 -1.297293599999999936e+00 3.968151000000000317e-02 3.374682700000000146e+00 -4.882788900000000210e-01 -4.199225699999999950e-01 -1.339240699999999951e+00 -5.961090999999999474e-01 2.749644599999999883e+00 1.140017499999999906e+00
|
|
||||||
-1.009047200000000033e-01 -9.199884400000000184e-01 6.856868600000000313e+00 -5.412246600000000241e-01 3.337194099999999941e-01 -6.140064399999999728e-02 2.316181199999999940e+00 -6.334115099999999554e-01 8.748846200000000017e-01 -4.204873499999999820e-01 -7.512705299999999919e-01 1.433020200000000077e+00 -1.297293599999999936e+00 9.747052600000000178e-01 1.998656900000000070e+00 9.630825400000000425e-01 -3.666163699999999803e+00 -2.169265799999999800e+00 -2.389257699999999929e+00 4.252659600000000317e+00 -2.126605500000000148e+00
|
|
||||||
-2.067217600000000044e-01 -9.199884400000000184e-01 7.093301099999999693e+00 -5.184923999999999644e-01 3.548458199999999785e-01 -6.140064399999999728e-02 5.018415400000000304e+00 -9.325388300000000408e-01 8.748846200000000017e-01 -4.204873499999999820e-01 -7.041011499999999534e-02 1.644831099999999990e+00 -1.297293599999999936e+00 1.414716400000000096e+00 3.030676300000000101e+00 -4.882788900000000210e-01 -4.199225699999999950e-01 -1.722329199999999894e+00 -1.009912600000000049e+00 3.618053300000000139e+00 -4.932939700000000260e-01
|
|
||||||
-1.009047200000000033e-01 -9.199884400000000184e-01 6.600593299999999886e+00 -1.051022399999999912e+00 -1.400649300000000042e-01 -6.140064399999999728e-02 2.494063399999999930e+00 9.818760600000000505e-01 5.274481500000000045e-01 -4.204873499999999820e-01 6.955578500000000330e-01 1.433020200000000077e+00 -1.226019699999999935e+00 1.084708100000000064e+00 2.342663400000000173e+00 -4.882788900000000210e-01 -1.193446900000000033e-01 -8.284559599999999913e-01 -3.892073400000000127e-01 1.213229300000000066e+00 -4.932939700000000260e-01
|
|
||||||
-1.009047200000000033e-01 -9.199884400000000184e-01 7.711561900000000414e+00 -1.635871099999999911e+00 -6.835984699999999581e-01 -6.140064399999999728e-02 5.538793799999999656e+00 2.118559900000000162e+00 -1.325546300000000066e+00 -4.204873499999999820e-01 -1.044531399999999999e-01 -6.586120500000000044e-01 1.994578700000000093e-01 -1.060346400000000022e+00 -4.093883600000000067e-01 -4.882788900000000210e-01 -1.682349700000000059e+00 -5.092155200000000326e-01 -5.961090999999999474e-01 8.124252600000000379e-01 1.140017499999999906e+00
|
|
||||||
-2.067217600000000044e-01 -9.199884400000000184e-01 7.089064900000000335e+00 -1.635871099999999911e+00 -6.835984699999999581e-01 -6.140064399999999728e-02 4.935133699999999735e+00 2.118559900000000162e+00 -1.325546300000000066e+00 -4.204873499999999820e-01 -1.384961600000000070e-01 -6.586120500000000044e-01 1.994578700000000093e-01 -1.060346400000000022e+00 -4.093883600000000067e-01 -4.882788900000000210e-01 -1.682349700000000059e+00 -6.369116900000000303e-01 -1.009912600000000049e+00 6.120232599999999579e-01 1.140017499999999906e+00
|
|
||||||
-2.067217600000000044e-01 -9.199884400000000184e-01 7.237258899999999606e+00 -1.635871099999999911e+00 -6.835984699999999581e-01 -6.140064399999999728e-02 8.587321700000000391e+00 2.118559900000000162e+00 -1.325546300000000066e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 -1.188139199999999951e+00 5.914642100000000458e-01 -1.555358999999999936e+00 -1.097401300000000024e+00 -4.882788900000000210e-01 -1.682349700000000059e+00 -8.284559599999999913e-01 -1.147847099999999898e+00 7.761792400000000480e-02 -2.126605500000000148e+00
|
|
||||||
-4.183558299999999841e-01 -9.199884400000000184e-01 2.030279600000000073e-01 -5.706745500000000026e-01 3.063499399999999873e-01 -6.140064399999999728e-02 4.771056299999999695e+00 -9.325388300000000408e-01 8.748846200000000017e-01 -4.204873499999999820e-01 -1.725391799999999864e-01 1.883118300000000023e+00 -1.297293599999999936e+00 1.909729000000000010e+00 3.374682700000000146e+00 -4.882788900000000210e-01 -4.199225699999999950e-01 -1.658481099999999930e+00 -8.719781199999999677e-01 3.517852299999999932e+00 -4.932939700000000260e-01
|
|
||||||
-4.183558299999999841e-01 -9.199884400000000184e-01 1.867770699999999895e-01 -4.214977300000000149e-01 6.879286399999999524e-02 -6.140064399999999728e-02 5.478199199999999713e+00 -8.727133700000000438e-01 7.590724599999999489e-01 -4.204873499999999820e-01 6.576196900000000345e-02 1.433020200000000077e+00 -1.297293599999999936e+00 9.747052600000000178e-01 2.686669800000000219e+00 -4.882788900000000210e-01 -4.199225699999999950e-01 -1.850025400000000042e+00 -1.147847099999999898e+00 3.785054900000000000e+00 -4.932939700000000260e-01
|
|
||||||
-4.183558299999999841e-01 -9.199884400000000184e-01 3.201495300000000155e-01 -5.497234699999999918e-01 3.258209799999999823e-01 -6.140064399999999728e-02 4.870370699999999609e+00 -6.334115099999999554e-01 1.106508899999999906e+00 -4.204873499999999820e-01 -7.853135500000000269e-01 1.883118300000000023e+00 -1.297293599999999936e+00 1.909729000000000010e+00 2.342663400000000173e+00 9.630825400000000425e-01 -3.666163699999999803e+00 -2.233113900000000207e+00 -3.492733799999999889e+00 4.119058299999999839e+00 -2.126605500000000148e+00
|
|
||||||
-4.183558299999999841e-01 -9.199884400000000184e-01 3.852575100000000252e-01 -3.333030000000000159e-01 5.269529699999999650e-01 -6.140064399999999728e-02 5.896268599999999971e+00 -5.137605800000000222e-01 1.338133199999999912e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.221209299999999942e+00 -1.297293599999999936e+00 5.346940799999999605e-01 1.310643999999999920e+00 2.414444000000000035e+00 -3.666163699999999803e+00 -2.680050500000000113e+00 -3.975504599999999833e+00 2.916646300000000025e+00 -2.126605500000000148e+00
|
|
||||||
4.912314699999999895e-03 -9.199884400000000184e-01 -2.036404900000000073e-01 6.278152299999999464e-01 -6.835984699999999581e-01 1.585204200000000085e+01 1.510130500000000042e+00 -7.530624399999999996e-01 -1.674247799999999953e-01 -4.204873499999999820e-01 9.168374900000000327e-01 4.533949700000000083e-01 -1.083471999999999991e+00 -7.303380499999999609e-01 -1.097401300000000024e+00 9.630825400000000425e-01 -2.223389899999999919e+00 -1.083848300000000098e+00 -8.030108700000000432e-01 1.714234299999999989e+00 1.140017499999999906e+00
|
|
||||||
4.912314699999999895e-03 -9.199884400000000184e-01 -2.036404900000000073e-01 1.259323799999999993e+00 -1.454642800000000014e-01 -6.140064399999999728e-02 2.466523399999999810e+00 -8.727133700000000438e-01 2.958238400000000046e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 4.269186099999999762e-01 -1.083471999999999991e+00 -7.853394399999999997e-01 -4.093883600000000067e-01 -4.882788900000000210e-01 -2.223389899999999919e+00 -1.850025400000000042e+00 -2.389257699999999929e+00 4.116212599999999888e-01 -4.932939700000000260e-01
|
|
||||||
4.912314699999999895e-03 -9.199884400000000184e-01 -2.036404900000000073e-01 2.304856099999999852e+00 -2.258054300000000014e-01 -6.140064399999999728e-02 -2.782949499999999854e-01 -7.530624399999999996e-01 -1.674247799999999953e-01 -4.204873499999999820e-01 1.018966599999999945e+00 4.269186099999999762e-01 -1.083471999999999991e+00 -7.853394399999999997e-01 -7.533948200000000206e-01 3.865805400000000169e+00 -2.223389899999999919e+00 -1.020000199999999912e+00 -8.030108700000000432e-01 1.346830600000000100e+00 1.140017499999999906e+00
|
|
||||||
-2.323062499999999808e+00 -1.069149800000000067e-01 -1.697457099999999941e-01 6.132577799999999746e-01 1.667926900000000101e+00 -6.140064399999999728e-02 2.387091299999999805e+00 1.400654300000000019e+00 1.917194000000000065e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.565401999999999960e+00 -1.083471999999999991e+00 1.579720599999999919e+00 1.310643999999999920e+00 -4.882788900000000210e-01 -2.704314500000000177e+00 -3.190835199999999983e+00 -2.872028499999999873e+00 7.122242600000000534e-01 -2.126605500000000148e+00
|
|
||||||
-2.323062499999999808e+00 2.038597400000000115e-01 -2.036404900000000073e-01 1.472924799999999923e+00 1.483288600000000068e+00 -6.140064399999999728e-02 3.405861300000000202e+00 1.400654300000000019e+00 1.801381899999999980e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.565401999999999960e+00 -1.083471999999999991e+00 1.579720599999999919e+00 9.666375000000000384e-01 -4.882788900000000210e-01 -2.704314500000000177e+00 -2.935442800000000130e+00 -2.872028499999999873e+00 6.788239299999999643e-01 -2.126605500000000148e+00
|
|
||||||
-2.323062499999999808e+00 -4.350371599999999783e-02 -1.671022699999999972e-01 7.886664300000000294e-01 1.569663599999999937e+00 -6.140064399999999728e-02 2.594963900000000212e+00 1.400654300000000019e+00 1.801381899999999980e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.565401999999999960e+00 -1.083471999999999991e+00 1.579720599999999919e+00 6.226310299999999742e-01 -4.882788900000000210e-01 -2.704314500000000177e+00 -3.126987100000000019e+00 -2.940995800000000049e+00 8.124252600000000379e-01 -2.126605500000000148e+00
|
|
||||||
-2.323062499999999808e+00 -4.884767700000000046e-01 -1.316864000000000090e-01 -1.039045999999999914e+00 2.089721200000000056e+00 -6.140064399999999728e-02 2.550835199999999858e+00 1.400654300000000019e+00 2.033006199999999986e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.327114799999999928e+00 -9.765611499999999889e-01 1.249712200000000051e+00 6.226310299999999742e-01 9.630825400000000425e-01 -2.704314500000000177e+00 -3.510075599999999962e+00 -2.940995800000000049e+00 6.120232599999999579e-01 -2.126605500000000148e+00
|
|
||||||
-2.323062499999999808e+00 1.281601300000000110e-01 -1.599460799999999905e-01 1.762508700000000039e-01 2.010976100000000155e+00 -6.140064399999999728e-02 1.439705299999999966e+00 1.340828799999999932e+00 2.148818299999999848e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.485972899999999930e+00 -9.765611499999999889e-01 1.579720599999999919e+00 2.786245700000000158e-01 -4.882788900000000210e-01 -2.884661200000000036e+00 -3.063139000000000056e+00 -2.734093999999999802e+00 1.280029899999999943e+00 -2.126605500000000148e+00
|
|
||||||
-2.323062499999999808e+00 -1.101699000000000012e-01 -1.698813999999999880e-01 6.042540499999999870e-01 1.398278600000000038e+00 -6.140064399999999728e-02 2.376421300000000070e+00 1.400654300000000019e+00 1.917194000000000065e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.565401999999999960e+00 -1.083471999999999991e+00 1.579720599999999919e+00 1.310643999999999920e+00 -4.882788900000000210e-01 -2.704314500000000177e+00 -3.254683299999999946e+00 -2.872028499999999873e+00 7.122242600000000534e-01 -2.126605500000000148e+00
|
|
||||||
-1.009047200000000033e-01 -9.199884400000000184e-01 -1.466606299999999863e-01 -6.906291300000000355e-01 1.951804700000000059e+00 -6.140064399999999728e-02 4.202435600000000271e+00 1.340828799999999932e+00 2.958238400000000046e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 -1.555612500000000120e-01 -4.420070500000000124e-01 -1.005344999999999933e+00 9.666375000000000384e-01 -4.882788900000000210e-01 -9.008471799999999696e-01 -1.083848300000000098e+00 -1.147847099999999898e+00 -1.895847400000000016e-01 -4.932939700000000260e-01
|
|
||||||
2.165463900000000053e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 1.617520000000000069e+00 1.332110399999999917e+00 -6.140064399999999728e-02 2.292046599999999934e+00 1.161352500000000010e+00 6.419952900000000517e-02 -4.204873499999999820e-01 -7.512705299999999919e-01 -1.026085399999999981e-01 -2.638223499999999833e-01 -6.203352500000000047e-01 2.786245700000000158e-01 -4.882788900000000210e-01 6.100204299999999885e-02 -8.923040399999999650e-01 -8.719781199999999677e-01 9.794269300000000289e-01 1.140017499999999906e+00
|
|
||||||
2.165463900000000053e-01 -4.261098400000000175e-01 -1.624636299999999978e-01 -1.635871099999999911e+00 -4.876827799999999824e-02 -6.140064399999999728e-02 6.197760999999999854e+00 1.101526999999999923e+00 6.419952900000000517e-02 -4.204873499999999820e-01 -1.398087899999999939e+00 6.916821899999999745e-01 -6.914656300000000533e-01 3.696898900000000210e-01 -6.538189499999999543e-02 9.630825400000000425e-01 -2.824545599999999990e+00 -1.786177300000000079e+00 -2.182355999999999963e+00 1.714234299999999989e+00 -2.126605500000000148e+00
|
|
||||||
2.165463900000000053e-01 2.937676100000000123e-01 -1.699084100000000097e-01 -1.076287900000000075e+00 3.565073200000000164e-01 -6.140064399999999728e-02 5.026890100000000139e+00 1.041701500000000058e+00 6.419952900000000517e-02 -4.204873499999999820e-01 -1.398087899999999939e+00 1.035874799999999984e+00 -6.914656300000000533e-01 1.084708100000000064e+00 -6.538189499999999543e-02 -4.882788900000000210e-01 -2.824545599999999990e+00 -1.275392599999999987e+00 -1.837519700000000089e+00 4.252659600000000317e+00 -2.126605500000000148e+00
|
|
||||||
2.165463900000000053e-01 1.454575200000000068e-01 -1.740301599999999893e-01 -1.144663900000000067e+00 6.859228299999999834e-01 -6.140064399999999728e-02 4.378644200000000097e+00 9.220505900000000032e-01 1.800116800000000072e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.035874799999999984e+00 -6.914656300000000533e-01 1.084708100000000064e+00 9.666375000000000384e-01 -4.882788900000000210e-01 -2.824545599999999990e+00 -9.561521299999999890e-01 -1.630617900000000065e+00 5.822475299999999798e+00 -2.126605500000000148e+00
|
|
||||||
2.165463900000000053e-01 1.890722699999999867e-01 -1.805236600000000025e-01 -1.252384799999999965e+00 3.855892300000000050e-01 -6.140064399999999728e-02 5.175225900000000046e+00 9.818760600000000505e-01 4.116359900000000072e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.168256600000000089e+00 -8.696503300000000269e-01 1.084708100000000064e+00 6.226310299999999742e-01 -4.882788900000000210e-01 -2.884661200000000036e+00 -1.339240699999999951e+00 -1.768552399999999913e+00 5.388270999999999589e+00 -2.126605500000000148e+00
|
|
||||||
2.165463900000000053e-01 3.422228799999999654e-02 -1.771215600000000112e-01 -1.195947199999999988e+00 1.340947700000000020e-01 -6.140064399999999728e-02 5.977819399999999561e+00 1.041701500000000058e+00 4.116359900000000072e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.168256600000000089e+00 -8.696503300000000269e-01 1.084708100000000064e+00 2.786245700000000158e-01 -4.882788900000000210e-01 -2.884661200000000036e+00 -1.722329199999999894e+00 -2.044421400000000055e+00 3.584652900000000031e+00 -2.126605500000000148e+00
|
|
||||||
2.165463900000000053e-01 -1.571955399999999947e-01 -2.036404900000000073e-01 -1.635871099999999911e+00 -6.835984699999999581e-01 -6.140064399999999728e-02 7.223380699999999877e+00 1.161352500000000010e+00 2.958238400000000046e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.062351199999999940e+00 -8.696503300000000269e-01 8.647024700000000008e-01 6.226310299999999742e-01 9.630825400000000425e-01 -2.884661200000000036e+00 -2.041569599999999873e+00 -2.389257699999999929e+00 2.248639600000000183e+00 -2.126605500000000148e+00
|
|
||||||
2.165463900000000053e-01 -1.513992399999999905e-01 -2.036404900000000073e-01 -1.635871099999999911e+00 -6.835984699999999581e-01 -6.140064399999999728e-02 7.280384299999999698e+00 1.221177900000000038e+00 4.116359900000000072e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.062351199999999940e+00 -8.696503300000000269e-01 8.647024700000000008e-01 1.310643999999999920e+00 9.630825400000000425e-01 -2.884661200000000036e+00 -2.105417699999999837e+00 -2.458225000000000104e+00 2.081637900000000041e+00 -2.126605500000000148e+00
|
|
||||||
2.165463900000000053e-01 5.884707200000000027e-02 -2.036404900000000073e-01 -1.635871099999999911e+00 -2.642009699999999794e-01 -6.140064399999999728e-02 6.139267499999999878e+00 1.161352500000000010e+00 5.274481500000000045e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.221209299999999942e+00 -8.696503300000000269e-01 1.194710799999999962e+00 1.654650399999999966e+00 -4.882788900000000210e-01 -2.884661200000000036e+00 -1.850025400000000042e+00 -2.113388699999999787e+00 2.950046599999999852e+00 -2.126605500000000148e+00
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -4.648681900000000145e-01 3.306762800000000002e+00 -6.140064399999999728e-02 -2.782949499999999854e-01 8.622251300000000063e-01 1.800116800000000072e-01 -4.204873499999999820e-01 2.700200899999999904e-01 2.945368300000000272e-01 -7.627395099999999539e-01 -5.653338599999999659e-01 -6.538189499999999543e-02 9.630825400000000425e-01 -2.704314500000000177e+00 -1.658481099999999930e+00 -2.044421400000000055e+00 1.380230899999999927e+00 -4.932939700000000260e-01
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -3.897682399999999880e-01 3.562676699999999919e+00 -6.140064399999999728e-02 -2.782949499999999854e-01 8.622251300000000063e-01 1.800116800000000072e-01 -4.204873499999999820e-01 4.912997299999999901e-01 2.415841099999999908e-01 -7.627395099999999539e-01 -6.753366499999999828e-01 -6.538189499999999543e-02 9.630825400000000425e-01 -2.704314500000000177e+00 -1.722329199999999894e+00 -2.113388699999999787e+00 1.179828899999999958e+00 -4.932939700000000260e-01
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -8.835101600000000444e-02 3.151599899999999899e+00 -6.140064399999999728e-02 -2.782949499999999854e-01 8.622251300000000063e-01 1.800116800000000072e-01 -4.204873499999999820e-01 4.402351999999999932e-01 2.415841099999999908e-01 -7.627395099999999539e-01 -6.753366499999999828e-01 -6.538189499999999543e-02 9.630825400000000425e-01 -1.862696399999999919e+00 -1.722329199999999894e+00 -2.044421400000000055e+00 3.448205899999999824e-01 -4.932939700000000260e-01
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 8.028004199999999244e-03 2.753884000000000221e+00 -6.140064399999999728e-02 -2.782949499999999854e-01 9.220505900000000032e-01 1.800116800000000072e-01 -4.204873499999999820e-01 1.338480099999999895e-01 2.945368300000000272e-01 -7.627395099999999539e-01 -5.653338599999999659e-01 -6.538189499999999543e-02 9.630825400000000425e-01 -3.004892299999999850e+00 -1.786177300000000079e+00 -2.182355999999999963e+00 1.814435299999999973e+00 -4.932939700000000260e-01
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 4.556897699999999662e-02 2.129187599999999847e+00 -6.140064399999999728e-02 1.315811199999999959e+00 1.041701500000000058e+00 6.419952900000000517e-02 -4.204873499999999820e-01 9.980498899999999673e-02 2.945368300000000272e-01 -7.627395099999999539e-01 -5.653338599999999659e-01 2.786245700000000158e-01 9.630825400000000425e-01 -3.004892299999999850e+00 -1.977721499999999910e+00 -2.458225000000000104e+00 1.447031600000000084e+00 -2.126605500000000148e+00
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 2.525713199999999881e-01 1.422447299999999970e+00 -6.140064399999999728e-02 1.512061799999999900e+00 1.041701500000000058e+00 6.419952900000000517e-02 -4.204873499999999820e-01 1.849125399999999864e-01 2.945368300000000272e-01 -7.627395099999999539e-01 -5.653338599999999659e-01 -6.538189499999999543e-02 9.630825400000000425e-01 -3.004892299999999850e+00 -2.041569599999999873e+00 -2.665126700000000071e+00 1.447031600000000084e+00 -2.126605500000000148e+00
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -7.916692599999999858e-02 1.727626000000000106e+00 -6.140064399999999728e-02 2.181453299999999818e+00 1.161352500000000010e+00 -1.674247799999999953e-01 -4.204873499999999820e-01 3.171894799999999681e-02 2.945368300000000272e-01 -7.627395099999999539e-01 -5.653338599999999659e-01 -4.093883600000000067e-01 9.630825400000000425e-01 -3.004892299999999850e+00 -2.296962000000000170e+00 -3.009962999999999944e+00 9.126262600000000225e-01 -2.126605500000000148e+00
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -4.252467900000000273e-02 1.167387100000000011e+00 -6.140064399999999728e-02 3.498174999999999812e+00 1.161352500000000010e+00 -3.990490899999999952e-01 -4.204873499999999820e-01 -1.934558299999999953e-02 2.945368300000000272e-01 -7.627395099999999539e-01 -5.653338599999999659e-01 -7.533948200000000206e-01 9.630825400000000425e-01 -3.004892299999999850e+00 -2.233113900000000207e+00 -2.872028499999999873e+00 7.790249299999999488e-01 -2.126605500000000148e+00
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -4.825668000000000180e-01 1.192107599999999934e+00 -6.140064399999999728e-02 2.455209299999999928e+00 1.041701500000000058e+00 -1.674247799999999953e-01 -4.204873499999999820e-01 2.019340500000000038e-01 2.415841099999999908e-01 -7.627395099999999539e-01 -6.753366499999999828e-01 6.226310299999999742e-01 9.630825400000000425e-01 -3.004892299999999850e+00 -2.041569599999999873e+00 -2.458225000000000104e+00 1.179828899999999958e+00 -4.932939700000000260e-01
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -1.234333200000000019e+00 1.555435300000000076e+00 -6.140064399999999728e-02 3.528525600000000040e+00 1.161352500000000010e+00 -3.990490899999999952e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.621550400000000003e-01 -5.845548099999999803e-01 -5.653338599999999659e-01 -4.093883600000000067e-01 -4.882788900000000210e-01 -3.004892299999999850e+00 -2.169265799999999800e+00 -2.596159500000000175e+00 6.454235900000000470e-01 -2.126605500000000148e+00
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -1.023903400000000019e+00 2.444453699999999952e+00 -6.140064399999999728e-02 2.622615500000000210e+00 1.101526999999999923e+00 -1.674247799999999953e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 2.415841099999999908e-01 -7.627395099999999539e-01 -6.753366499999999828e-01 6.226310299999999742e-01 -4.882788900000000210e-01 -1.742465200000000047e+00 -2.105417699999999837e+00 -2.458225000000000104e+00 1.778189199999999914e-01 -4.932939700000000260e-01
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -9.064873300000000356e-01 2.027834799999999937e+00 -6.140064399999999728e-02 3.179202999999999779e+00 1.161352500000000010e+00 -1.674247799999999953e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 8.272596499999999853e-02 -7.627395099999999539e-01 -1.005344999999999933e+00 1.310643999999999920e+00 -4.882788900000000210e-01 -3.004892299999999850e+00 -2.233113900000000207e+00 -2.527192200000000000e+00 5.786229299999999798e-01 -4.932939700000000260e-01
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -1.969948700000000164e-02 2.620804199999999806e+00 -6.140064399999999728e-02 2.786160300000000145e+00 1.161352500000000010e+00 2.958238400000000046e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 9.829221200000000103e-01 -9.765611499999999889e-01 5.346940799999999605e-01 1.998656900000000070e+00 9.630825400000000425e-01 -3.004892299999999850e+00 -2.616202400000000150e+00 -2.389257699999999929e+00 7.456245999999999707e-01 -2.126605500000000148e+00
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -7.801124600000000631e-02 2.212019000000000180e+00 -6.140064399999999728e-02 2.183279399999999981e+00 1.101526999999999923e+00 6.432603000000000071e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.433020200000000077e+00 -9.765611499999999889e-01 1.469717799999999963e+00 2.686669800000000219e+00 2.414444000000000035e+00 -1.742465200000000047e+00 -2.552354300000000187e+00 -2.113388699999999787e+00 5.118222599999999733e-01 -2.126605500000000148e+00
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -2.033510400000000107e-01 2.359426099999999860e+00 -6.140064399999999728e-02 1.661869199999999935e+00 1.041701500000000058e+00 5.274481500000000045e-01 -4.204873499999999820e-01 -7.342490200000000300e-01 1.433020200000000077e+00 -9.765611499999999889e-01 1.469717799999999963e+00 1.998656900000000070e+00 9.630825400000000425e-01 -1.742465200000000047e+00 -2.424658099999999816e+00 -2.182355999999999963e+00 5.452225899999999514e-01 -2.126605500000000148e+00
|
|
||||||
-1.264892099999999964e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 2.009261999999999854e-02 2.394366100000000053e+00 -6.140064399999999728e-02 2.861610999999999905e+00 1.161352500000000010e+00 2.958238400000000046e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 9.829221200000000103e-01 -9.765611499999999889e-01 5.346940799999999605e-01 1.998656900000000070e+00 9.630825400000000425e-01 -3.004892299999999850e+00 -2.552354300000000187e+00 -2.458225000000000104e+00 7.122242600000000534e-01 -2.126605500000000148e+00
|
|
||||||
-1.159075099999999914e+00 -9.199884400000000184e-01 -1.692480700000000005e-01 -1.065333499999999933e+00 4.088501899999999800e+00 -6.140064399999999728e-02 -2.782949499999999854e-01 9.818760600000000505e-01 6.432603000000000071e-01 -4.204873499999999820e-01 -5.640339199999999664e-01 6.387294799999999606e-01 -1.012198099999999990e+00 -2.353254700000000088e-01 1.310643999999999920e+00 -4.882788900000000210e-01 -1.321656200000000059e+00 -2.105417699999999837e+00 -2.113388699999999787e+00 1.280029899999999943e+00 -4.932939700000000260e-01
|
|
||||||
-1.159075099999999914e+00 -9.199884400000000184e-01 -1.836570299999999989e-01 -3.098444300000000040e-01 2.705371799999999993e+00 1.392131099999999932e+01 -2.782949499999999854e-01 1.281003399999999903e+00 7.590724599999999489e-01 -4.204873499999999820e-01 -3.087112599999999873e-01 8.240639800000000292e-01 -1.261656700000000075e+00 -2.353254700000000088e-01 9.666375000000000384e-01 -4.882788900000000210e-01 -4.147088300000000061e+00 -3.063139000000000056e+00 -3.078930300000000120e+00 2.950046599999999852e+00 -2.126605500000000148e+00
|
|
||||||
-1.159075099999999914e+00 -9.199884400000000184e-01 -1.819506200000000073e-01 -5.564280799999999916e-01 2.994759199999999844e+00 1.511530800000000063e+01 -2.782949499999999854e-01 1.340828799999999932e+00 7.590724599999999489e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 7.446349100000000387e-01 -1.261656700000000075e+00 -4.003296700000000263e-01 -6.538189499999999543e-02 9.630825400000000425e-01 -4.147088300000000061e+00 -3.318531399999999909e+00 -3.423766500000000157e+00 2.282039900000000010e+00 -2.126605500000000148e+00
|
|
||||||
-1.159075099999999914e+00 -9.199884400000000184e-01 -1.788082699999999914e-01 1.190056500000000010e-02 3.144823900000000005e+00 1.731405399999999872e+01 -2.782949499999999854e-01 1.281003399999999903e+00 7.590724599999999489e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 7.446349100000000387e-01 -1.261656700000000075e+00 -4.003296700000000263e-01 2.786245700000000158e-01 9.630825400000000425e-01 -4.147088300000000061e+00 -3.190835199999999983e+00 -3.216864800000000191e+00 2.582642900000000186e+00 -2.126605500000000148e+00
|
|
||||||
-1.159075099999999914e+00 -9.199884400000000184e-01 -1.795185800000000109e-01 -4.353921499999999778e-01 2.663423900000000177e+00 1.681704500000000024e+01 -2.782949499999999854e-01 1.400654300000000019e+00 7.590724599999999489e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 7.446349100000000387e-01 -1.261656700000000075e+00 -4.003296700000000263e-01 -4.093883600000000067e-01 9.630825400000000425e-01 -4.147088300000000061e+00 -3.446227499999999999e+00 -3.768602800000000030e+00 2.081637900000000041e+00 -2.126605500000000148e+00
|
|
||||||
-1.159075099999999914e+00 -9.199884400000000184e-01 -2.036404900000000073e-01 -2.160894999999999899e-01 2.395199100000000136e+00 1.990038699999999849e+01 -2.782949499999999854e-01 1.520305199999999912e+00 5.274481500000000045e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 7.446349100000000387e-01 -1.261656700000000075e+00 -4.003296700000000263e-01 6.226310299999999742e-01 2.414444000000000035e+00 -4.147088300000000061e+00 -3.637771799999999889e+00 -3.975504599999999833e+00 1.580632899999999896e+00 -2.126605500000000148e+00
|
|
||||||
6.398145400000000427e-01 -9.199884400000000184e-01 -1.558342500000000075e-01 1.536369600000000002e+00 3.738620000000000054e+00 -6.140064399999999728e-02 3.481048200000000037e+00 9.220505900000000032e-01 1.338133199999999912e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 8.505403400000000058e-01 -1.261656700000000075e+00 -1.803240799999999977e-01 1.310643999999999920e+00 2.414444000000000035e+00 -1.141309499999999977e+00 -2.169265799999999800e+00 -1.354748899999999923e+00 1.981436900000000056e+00 -4.932939700000000260e-01
|
|
||||||
6.398145400000000427e-01 -9.199884400000000184e-01 -1.662600800000000045e-01 1.464656699999999923e+00 2.774200099999999836e+00 -6.140064399999999728e-02 2.661191399999999874e+00 7.425741900000000228e-01 1.338133199999999912e+00 -4.204873499999999820e-01 -1.278937400000000002e+00 8.505403400000000058e-01 -1.261656700000000075e+00 -1.803240799999999977e-01 6.226310299999999742e-01 9.630825400000000425e-01 -5.922911000000000148e-02 -1.658481099999999930e+00 -1.009912600000000049e+00 3.350850599999999790e+00 1.140017499999999906e+00
|
|
||||||
6.398145400000000427e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 1.620549199999999912e+00 3.553331599999999924e+00 -6.140064399999999728e-02 -2.782949499999999854e-01 7.425741900000000228e-01 1.222321100000000049e+00 -4.204873499999999820e-01 -1.278937400000000002e+00 8.505403400000000058e-01 -1.261656700000000075e+00 -1.803240799999999977e-01 6.226310299999999742e-01 9.630825400000000425e-01 -5.922911000000000148e-02 -1.530784900000000004e+00 -9.409453800000000534e-01 3.083647899999999886e+00 1.140017499999999906e+00
|
|
||||||
6.398145400000000427e-01 -9.199884400000000184e-01 -1.621394100000000116e-01 1.806447200000000031e+00 3.155374699999999866e+00 -6.140064399999999728e-02 2.985229200000000027e+00 8.023996599999999590e-01 1.222321100000000049e+00 -4.204873499999999820e-01 -1.193829800000000052e+00 8.505403400000000058e-01 -1.261656700000000075e+00 -1.803240799999999977e-01 1.310643999999999920e+00 9.630825400000000425e-01 -1.141309499999999977e+00 -1.913873399999999947e+00 -1.216814400000000074e+00 1.847835600000000023e+00 -4.932939700000000260e-01
|
|
||||||
-2.067217600000000044e-01 -4.007567300000000055e-01 -2.036404900000000073e-01 3.391185999999999812e+00 3.988334599999999952e+00 -6.140064399999999728e-02 -2.782949499999999854e-01 8.622251300000000063e-01 7.590724599999999489e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.406543799999999900e+00 -1.439841399999999938e+00 6.996982699999999555e-01 1.310643999999999920e+00 2.414444000000000035e+00 -9.008471799999999696e-01 -2.041569599999999873e+00 -1.492683399999999994e+00 1.948036600000000007e+00 -4.932939700000000260e-01
|
|
||||||
-2.067217600000000044e-01 -4.964275599999999899e-01 -2.036404900000000073e-01 2.464927499999999938e+00 3.671953400000000034e+00 -6.140064399999999728e-02 -2.782949499999999854e-01 9.818760600000000505e-01 6.432603000000000071e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.406543799999999900e+00 -1.439841399999999938e+00 6.996982699999999555e-01 2.786245700000000158e-01 -4.882788900000000210e-01 -9.008471799999999696e-01 -2.233113900000000207e+00 -1.492683399999999994e+00 2.449041600000000152e+00 -4.932939700000000260e-01
|
|
||||||
-2.067217600000000044e-01 -5.508412299999999595e-01 -2.036404900000000073e-01 2.448678300000000085e+00 3.586908900000000067e+00 -6.140064399999999728e-02 -2.782949499999999854e-01 1.041701500000000058e+00 6.432603000000000071e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.406543799999999900e+00 -1.439841399999999938e+00 6.996982699999999555e-01 9.666375000000000384e-01 -4.882788900000000210e-01 -4.567897300000000271e+00 -2.424658099999999816e+00 -1.699585200000000018e+00 8.294100000000000250e+00 -4.932939700000000260e-01
|
|
||||||
-2.067217600000000044e-01 -5.894448599999999594e-01 -1.760816000000000048e-01 2.478711699999999851e+00 2.715440099999999912e+00 -6.140064399999999728e-02 1.888855699999999915e+00 1.041701500000000058e+00 8.748846200000000017e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 2.306740000000000013e+00 -1.439841399999999938e+00 2.569745800000000191e+00 1.654650399999999966e+00 -4.882788900000000210e-01 -4.567897300000000271e+00 -2.807746700000000040e+00 -1.630617900000000065e+00 7.659493600000000235e+00 -4.932939700000000260e-01
|
|
||||||
-2.067217600000000044e-01 -5.285552500000000320e-01 -1.710049600000000114e-01 1.612483799999999912e+00 2.335284399999999927e+00 -6.140064399999999728e-02 2.288067700000000038e+00 1.101526999999999923e+00 9.906967700000000043e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 2.306740000000000013e+00 -1.439841399999999938e+00 2.569745800000000191e+00 2.786245700000000158e-01 -4.882788900000000210e-01 -4.567897300000000271e+00 -2.871594700000000167e+00 -1.630617900000000065e+00 7.793095000000000105e+00 -2.126605500000000148e+00
|
|
||||||
-2.067217600000000044e-01 -4.914022499999999849e-01 -1.679073500000000108e-01 1.328023299999999907e+00 2.070918999999999954e+00 -6.140064399999999728e-02 2.531654800000000094e+00 1.161352500000000010e+00 1.106508899999999906e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 2.306740000000000013e+00 -1.439841399999999938e+00 2.569745800000000191e+00 1.310643999999999920e+00 -4.882788900000000210e-01 -4.567897300000000271e+00 -3.063139000000000056e+00 -1.699585200000000018e+00 7.425691300000000439e+00 -2.126605500000000148e+00
|
|
||||||
-2.067217600000000044e-01 -4.318304499999999768e-01 -1.629405899999999963e-01 1.064820300000000053e+00 1.826309299999999913e+00 -6.140064399999999728e-02 2.922226799999999791e+00 1.161352500000000010e+00 1.222321100000000049e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 2.306740000000000013e+00 -1.439841399999999938e+00 2.569745800000000191e+00 9.666375000000000384e-01 -4.882788900000000210e-01 -4.567897300000000271e+00 -3.190835199999999983e+00 -1.561650699999999947e+00 7.358890599999999615e+00 -2.126605500000000148e+00
|
|
||||||
-2.067217600000000044e-01 -9.199884400000000184e-01 -1.536818399999999862e-01 8.504289299999999718e-01 1.627063099999999984e+00 -6.140064399999999728e-02 3.650307600000000097e+00 1.281003399999999903e+00 1.106508899999999906e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 2.306740000000000013e+00 -1.439841399999999938e+00 2.569745800000000191e+00 9.666375000000000384e-01 -4.882788900000000210e-01 -4.567897300000000271e+00 -3.701619899999999852e+00 -1.975454199999999938e+00 5.655473599999999657e+00 -2.126605500000000148e+00
|
|
||||||
8.514486100000000501e-01 -9.199884400000000184e-01 -4.196450100000000127e-02 5.097702299999999909e-01 -1.850815199999999994e-01 -6.140064399999999728e-02 4.807196900000000106e+00 1.041701500000000058e+00 1.106508899999999906e+00 -2.960067800000000249e-01 -1.347023400000000093e+00 -4.732775499999999913e-01 -1.925484699999999993e-01 -1.280351999999999935e+00 -4.093883600000000067e-01 -4.882788900000000210e-01 -2.996914099999999914e-01 -6.369116900000000303e-01 -4.581745899999999927e-01 -3.231860799999999867e-01 1.140017499999999906e+00
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -1.722676499999999944e-01 4.459118799999999827e-01 2.837618299999999927e-01 -6.140064399999999728e-02 4.655842899999999673e+00 9.220505900000000032e-01 8.748846200000000017e-01 -4.204873499999999820e-01 -5.470124100000000045e-01 8.240639800000000292e-01 -1.083471999999999991e+00 3.968151000000000317e-02 2.786245700000000158e-01 -4.882788900000000210e-01 -2.163274299999999872e+00 -1.850025400000000042e+00 -1.975454199999999938e+00 1.046227599999999924e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -1.792111100000000068e-01 3.904298299999999777e-01 4.462962999999999791e-01 -6.140064399999999728e-02 3.563814700000000002e+00 1.041701500000000058e+00 5.274481500000000045e-01 -4.204873499999999820e-01 -6.831844900000000331e-01 8.240639800000000292e-01 -1.083471999999999991e+00 3.968151000000000317e-02 -6.538189499999999543e-02 -4.882788900000000210e-01 -4.800381400000000021e-01 -1.594632999999999967e+00 -1.423716200000000098e+00 1.680833900000000103e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -1.823664700000000027e-01 1.287078000000000111e-01 3.003563000000000205e-01 -6.140064399999999728e-02 3.067558399999999796e+00 9.818760600000000505e-01 9.906967700000000043e-01 -4.204873499999999820e-01 -5.470124100000000045e-01 8.240639800000000292e-01 -1.083471999999999991e+00 3.968151000000000317e-02 -6.538189499999999543e-02 -4.882788900000000210e-01 -4.800381400000000021e-01 -1.913873399999999947e+00 -1.423716200000000098e+00 1.647433600000000053e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -1.765072199999999925e-01 1.645898199999999978e-01 1.530374700000000088e-01 -6.140064399999999728e-02 3.989067599999999825e+00 9.220505900000000032e-01 1.569757499999999917e+00 -4.204873499999999820e-01 -1.934558299999999953e-02 8.240639800000000292e-01 -1.083471999999999991e+00 3.968151000000000317e-02 2.786245700000000158e-01 -4.882788900000000210e-01 -2.163274299999999872e+00 -2.233113900000000207e+00 -2.044421400000000055e+00 8.124252600000000379e-01 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -1.794354900000000030e-01 3.718185500000000254e-01 6.274611200000000666e-02 -6.140064399999999728e-02 3.528525600000000040e+00 9.220505900000000032e-01 1.453945400000000054e+00 -4.204873499999999820e-01 -2.324072999999999851e-03 8.240639800000000292e-01 -1.083471999999999991e+00 3.968151000000000317e-02 2.786245700000000158e-01 -4.882788900000000210e-01 -1.021078300000000105e+00 -2.105417699999999837e+00 -1.699585200000000018e+00 1.079627899999999974e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -1.819951599999999892e-01 5.185819200000000295e-01 -1.617945599999999831e-02 -6.140064399999999728e-02 3.125956200000000074e+00 9.220505900000000032e-01 1.569757499999999917e+00 -4.204873499999999820e-01 -8.743162499999999893e-02 8.240639800000000292e-01 -1.083471999999999991e+00 3.968151000000000317e-02 2.786245700000000158e-01 -4.882788900000000210e-01 -1.021078300000000105e+00 -2.105417699999999837e+00 -1.768552399999999913e+00 1.079627899999999974e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -1.786018299999999892e-01 4.409670199999999873e-01 -2.975734500000000171e-01 -6.140064399999999728e-02 3.659639299999999817e+00 9.220505900000000032e-01 1.917194000000000065e+00 -4.204873499999999820e-01 2.189555599999999935e-01 8.240639800000000292e-01 -1.083471999999999991e+00 3.968151000000000317e-02 9.666375000000000384e-01 -4.882788900000000210e-01 -2.584083300000000083e+00 -2.233113900000000207e+00 -2.044421400000000055e+00 1.213229300000000066e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 7.019600499999999466e-01 -2.490622999999999865e-01 -6.140064399999999728e-02 4.154513399999999912e+00 9.220505900000000032e-01 2.033006199999999986e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 8.240639800000000292e-01 -1.083471999999999991e+00 3.968151000000000317e-02 6.226310299999999742e-01 -4.882788900000000210e-01 -2.584083300000000083e+00 -2.488506199999999779e+00 -2.389257699999999929e+00 7.122242600000000534e-01 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 1.892891099999999938e+00 4.517521499999999773e-02 -6.140064399999999728e-02 3.438903100000000101e+00 9.220505900000000032e-01 1.801381899999999980e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 8.240639800000000292e-01 -1.083471999999999991e+00 3.968151000000000317e-02 2.786245700000000158e-01 -4.882788900000000210e-01 -6.603848700000000127e-01 -2.296962000000000170e+00 -2.182355999999999963e+00 1.981436900000000056e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 2.550347599999999826e+00 -3.299172300000000058e-01 -6.140064399999999728e-02 3.329692699999999839e+00 9.220505900000000032e-01 1.801381899999999980e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 6.122531199999999840e-01 -1.154745799999999933e+00 -5.103324599999999878e-01 -6.538189499999999543e-02 -4.882788900000000210e-01 -6.603848700000000127e-01 -2.360809999999999853e+00 -2.182355999999999963e+00 1.948036600000000007e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 1.877137700000000020e+00 4.046818699999999991e-01 -6.140064399999999728e-02 1.572006699999999979e+00 9.220505900000000032e-01 2.148818299999999848e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.886314000000000046e-01 -1.154745799999999933e+00 -1.390354799999999891e+00 -7.533948200000000206e-01 -4.882788900000000210e-01 -6.603848700000000127e-01 -2.360809999999999853e+00 -1.768552399999999913e+00 1.814435299999999973e+00 1.140017499999999906e+00
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 1.951201100000000022e+00 4.276256600000000185e-01 -6.140064399999999728e-02 2.555671400000000038e+00 9.220505900000000032e-01 1.801381899999999980e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 7.975876200000000527e-01 -1.154745799999999933e+00 -1.253226799999999919e-01 2.786245700000000158e-01 -4.882788900000000210e-01 -6.603848700000000127e-01 -2.424658099999999816e+00 -2.320290500000000034e+00 2.315440300000000118e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 1.813760199999999934e+00 3.028448200000000146e-01 -6.140064399999999728e-02 3.495309699999999964e+00 9.818760600000000505e-01 1.569757499999999917e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 8.240639800000000292e-01 -1.190382800000000074e+00 -1.253226799999999919e-01 6.226310299999999742e-01 -4.882788900000000210e-01 -6.603848700000000127e-01 -2.360809999999999853e+00 -2.320290500000000034e+00 2.482441899999999979e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -7.384623500000000451e-01 -2.036404900000000073e-01 1.628029900000000030e+00 4.830671999999999744e-01 -6.140064399999999728e-02 3.292136499999999799e+00 9.220505900000000032e-01 1.569757499999999917e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.406543799999999900e+00 -1.190382800000000074e+00 1.084708100000000064e+00 1.310643999999999920e+00 -4.882788900000000210e-01 -6.603848700000000127e-01 -2.233113900000000207e+00 -2.251323199999999858e+00 2.482441899999999979e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -7.555763100000000287e-01 -2.036404900000000073e-01 1.547713799999999917e+00 3.730759799999999737e-01 -6.140064399999999728e-02 4.033461299999999916e+00 9.818760600000000505e-01 1.338133199999999912e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.538925600000000005e+00 -1.368567499999999937e+00 1.084708100000000064e+00 9.666375000000000384e-01 -4.882788900000000210e-01 -6.603848700000000127e-01 -2.360809999999999853e+00 -2.389257699999999929e+00 2.916646300000000025e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 -3.405394900000000002e-01 5.202276700000000309e-01 -6.140064399999999728e-02 5.861965500000000162e+00 1.101526999999999923e+00 5.274481500000000045e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 7.975876200000000527e-01 -1.012198099999999990e+00 9.468290699999999671e-02 2.786245700000000158e-01 -4.882788900000000210e-01 -3.545932500000000154e+00 -2.552354300000000187e+00 -3.078930300000000120e+00 1.781034900000000087e+00 -2.126605500000000148e+00
|
|
||||||
1.107293500000000042e-01 -5.556284299999999510e-01 -2.036404900000000073e-01 1.387813699999999928e+00 7.214435799999999732e-01 -6.140064399999999728e-02 6.888291500000000234e+00 1.101526999999999923e+00 7.590724599999999489e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.565401999999999960e+00 -1.368567499999999937e+00 1.139709499999999931e+00 -6.538189499999999543e-02 -4.882788900000000210e-01 -6.603848700000000127e-01 -2.488506199999999779e+00 -2.734093999999999802e+00 4.219259300000000046e+00 -2.126605500000000148e+00
|
|
||||||
1.107293500000000042e-01 -6.574070800000000325e-01 -2.036404900000000073e-01 1.269545600000000052e+00 6.664869300000000329e-01 -6.140064399999999728e-02 4.886410099999999979e+00 1.041701500000000058e+00 8.748846200000000017e-01 -4.204873499999999820e-01 -1.398087899999999939e+00 1.565401999999999960e+00 -1.368567499999999937e+00 1.139709499999999931e+00 2.786245700000000158e-01 -4.882788900000000210e-01 -6.603848700000000127e-01 -2.105417699999999837e+00 -1.975454199999999938e+00 3.117048299999999994e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -7.004868300000000048e-01 -2.036404900000000073e-01 2.007249100000000119e+00 7.271353000000000399e-01 -6.140064399999999728e-02 2.599952099999999877e+00 9.818760600000000505e-01 1.453945400000000054e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.538925600000000005e+00 -1.368567499999999937e+00 1.084708100000000064e+00 2.786245700000000158e-01 -4.882788900000000210e-01 -6.603848700000000127e-01 -2.360809999999999853e+00 -1.837519700000000089e+00 2.749644599999999883e+00 -4.932939700000000260e-01
|
|
||||||
1.107293500000000042e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 1.842792999999999903e+00 3.111469399999999830e-01 -6.140064399999999728e-02 3.527069200000000126e+00 9.818760600000000505e-01 1.569757499999999917e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 6.387294799999999606e-01 -1.190382800000000074e+00 -5.103324599999999878e-01 -6.538189499999999543e-02 -4.882788900000000210e-01 -6.603848700000000127e-01 -2.424658099999999816e+00 -2.320290500000000034e+00 2.482441899999999979e+00 -4.932939700000000260e-01
|
|
||||||
-3.125388000000000055e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 5.692962200000000195e-01 2.595423600000000164e+00 -6.140064399999999728e-02 1.812335900000000111e+00 1.221177900000000038e+00 1.338133199999999912e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 7.181585499999999511e-01 -1.439841399999999938e+00 -7.303380499999999609e-01 1.654650399999999966e+00 2.414444000000000035e+00 -1.862696399999999919e+00 -2.680050500000000113e+00 -1.630617900000000065e+00 -2.563854099999999803e-01 -4.932939700000000260e-01
|
|
||||||
-3.125388000000000055e-01 -9.199884400000000184e-01 -1.823449799999999899e-01 4.837624799999999947e-01 2.271247499999999864e+00 -6.140064399999999728e-02 1.396321499999999993e+00 1.221177900000000038e+00 1.569757499999999917e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 7.181585499999999511e-01 -1.439841399999999938e+00 -7.303380499999999609e-01 9.666375000000000384e-01 2.414444000000000035e+00 -1.862696399999999919e+00 -2.871594700000000167e+00 -1.699585200000000018e+00 -2.563854099999999803e-01 -4.932939700000000260e-01
|
|
||||||
-3.125388000000000055e-01 -9.199884400000000184e-01 -1.842095699999999892e-01 2.981724199999999936e-01 2.012528300000000048e+00 -6.140064399999999728e-02 2.777687199999999912e+00 1.221177900000000038e+00 1.569757499999999917e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 7.181585499999999511e-01 -1.439841399999999938e+00 -7.303380499999999609e-01 9.666375000000000384e-01 2.414444000000000035e+00 -1.862696399999999919e+00 -2.999290900000000093e+00 -1.699585200000000018e+00 -2.563854099999999803e-01 -4.932939700000000260e-01
|
|
||||||
-3.125388000000000055e-01 -9.199884400000000184e-01 -1.857890500000000111e-01 1.409597400000000000e-01 1.793368099999999909e+00 -6.140064399999999728e-02 2.529275399999999951e+00 1.221177900000000038e+00 1.685569700000000060e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 7.181585499999999511e-01 -1.439841399999999938e+00 -7.303380499999999609e-01 6.226310299999999742e-01 2.414444000000000035e+00 -1.862696399999999919e+00 -3.126987100000000019e+00 -1.768552399999999913e+00 -2.897857400000000139e-01 -4.932939700000000260e-01
|
|
||||||
-3.125388000000000055e-01 -9.199884400000000184e-01 -1.878364800000000001e-01 7.236910100000000234e-01 1.509278200000000014e+00 -6.140064399999999728e-02 3.450049200000000038e+00 1.221177900000000038e+00 1.917194000000000065e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 2.809790800000000033e+00 -1.439841399999999938e+00 3.614772299999999827e+00 1.998656900000000070e+00 9.630825400000000425e-01 -1.862696399999999919e+00 -3.190835199999999983e+00 -1.699585200000000018e+00 -2.229850800000000022e-01 -2.126605500000000148e+00
|
|
||||||
-3.125388000000000055e-01 -9.199884400000000184e-01 -1.849998599999999882e-01 5.287414299999999567e-01 1.328100400000000070e+00 -6.140064399999999728e-02 4.119239099999999709e+00 1.281003399999999903e+00 1.685569700000000060e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 5.328240400000000543e-01 -1.439841399999999938e+00 -1.115347799999999889e+00 1.310643999999999920e+00 -4.882788900000000210e-01 -1.862696399999999919e+00 -3.063139000000000056e+00 -1.906486899999999984e+00 -3.231860799999999867e-01 -4.932939700000000260e-01
|
|
||||||
-3.125388000000000055e-01 -9.199884400000000184e-01 -1.843164300000000033e-01 6.081039499999999487e-01 1.103934399999999982e+00 -6.140064399999999728e-02 4.280468599999999846e+00 1.281003399999999903e+00 1.569757499999999917e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 5.328240400000000543e-01 -1.439841399999999938e+00 -1.115347799999999889e+00 6.226310299999999742e-01 -4.882788900000000210e-01 -1.862696399999999919e+00 -3.063139000000000056e+00 -1.837519700000000089e+00 -3.231860799999999867e-01 -4.932939700000000260e-01
|
|
||||||
-3.125388000000000055e-01 -9.199884400000000184e-01 -1.817479100000000125e-01 5.431914500000000201e-01 1.341529600000000100e+00 -6.140064399999999728e-02 3.164841700000000202e+00 1.281003399999999903e+00 2.033006199999999986e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 5.857767600000000074e-01 -1.439841399999999938e+00 -1.005344999999999933e+00 1.310643999999999920e+00 -4.882788900000000210e-01 -1.862696399999999919e+00 -3.254683299999999946e+00 -1.975454199999999938e+00 -3.565864100000000203e-01 -4.932939700000000260e-01
|
|
||||||
-3.125388000000000055e-01 -9.199884400000000184e-01 -1.799788099999999891e-01 7.192773000000000083e-01 1.140380500000000019e+00 -6.140064399999999728e-02 3.443074999999999886e+00 1.340828799999999932e+00 2.033006199999999986e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.621550400000000003e-01 -8.696503300000000269e-01 -1.005344999999999933e+00 9.666375000000000384e-01 -4.882788900000000210e-01 -1.862696399999999919e+00 -3.382379400000000036e+00 -2.044421400000000055e+00 -3.899867499999999931e-01 -4.932939700000000260e-01
|
|
||||||
-3.125388000000000055e-01 -9.199884400000000184e-01 -1.810197299999999898e-01 6.156709799999999788e-01 1.060141100000000058e+00 -6.140064399999999728e-02 3.279366599999999909e+00 1.340828799999999932e+00 2.148818299999999848e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.459496600000000033e+00 -9.765611499999999889e-01 1.524719200000000052e+00 9.666375000000000384e-01 -4.882788900000000210e-01 -1.862696399999999919e+00 -3.382379400000000036e+00 -2.044421400000000055e+00 -2.229850800000000022e-01 -2.126605500000000148e+00
|
|
||||||
-4.183558299999999841e-01 -9.199884400000000184e-01 -1.805742399999999970e-01 1.042659299999999956e+00 1.094481700000000002e+00 -6.140064399999999728e-02 3.349429999999999907e+00 1.281003399999999903e+00 1.685569700000000060e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.459496600000000033e+00 -9.765611499999999889e-01 1.524719200000000052e+00 6.226310299999999742e-01 9.630825400000000425e-01 -1.982927499999999954e+00 -3.126987100000000019e+00 -1.837519700000000089e+00 -2.258307600000000054e-02 -2.126605500000000148e+00
|
|
||||||
-4.183558299999999841e-01 -9.199884400000000184e-01 -1.611781499999999923e-01 8.295637099999999542e-01 9.530231700000000306e-01 -6.140064399999999728e-02 3.060819500000000026e+00 1.221177900000000038e+00 1.338133199999999912e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.459496600000000033e+00 -9.765611499999999889e-01 1.524719200000000052e+00 6.226310299999999742e-01 -4.882788900000000210e-01 -1.982927499999999954e+00 -2.616202400000000150e+00 -1.561650699999999947e+00 2.446195899999999979e-01 -4.932939700000000260e-01
|
|
||||||
-4.183558299999999841e-01 -9.199884400000000184e-01 -1.710553999999999963e-01 7.966295399999999693e-01 8.235100100000000145e-01 -6.140064399999999728e-02 3.565299299999999949e+00 1.281003399999999903e+00 1.453945400000000054e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.459496600000000033e+00 -9.765611499999999889e-01 1.524719200000000052e+00 -6.538189499999999543e-02 -4.882788900000000210e-01 -1.862696399999999919e+00 -2.807746700000000040e+00 -1.699585200000000018e+00 1.081725700000000026e-02 -4.932939700000000260e-01
|
|
||||||
-4.183558299999999841e-01 -9.199884400000000184e-01 -1.646348499999999992e-01 9.523956000000000088e-01 1.120470300000000030e+00 -6.140064399999999728e-02 2.788995200000000008e+00 1.221177900000000038e+00 1.222321100000000049e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.459496600000000033e+00 -9.765611499999999889e-01 1.524719200000000052e+00 6.226310299999999742e-01 -4.882788900000000210e-01 -1.922811999999999966e+00 -2.488506199999999779e+00 -1.492683399999999994e+00 2.446195899999999979e-01 -4.932939700000000260e-01
|
|
||||||
-4.183558299999999841e-01 -9.199884400000000184e-01 -1.509341100000000102e-01 6.957258400000000398e-01 1.212427700000000108e+00 -6.140064399999999728e-02 2.484822299999999817e+00 1.221177900000000038e+00 1.222321100000000049e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 1.459496600000000033e+00 -9.765611499999999889e-01 1.524719200000000052e+00 2.786245700000000158e-01 -4.882788900000000210e-01 -1.321656200000000059e+00 -2.296962000000000170e+00 -1.423716200000000098e+00 1.444185900000000133e-01 -4.932939700000000260e-01
|
|
||||||
-4.183558299999999841e-01 -9.199884400000000184e-01 -2.036404900000000073e-01 1.173281800000000041e+00 2.579785699999999959e+00 -6.140064399999999728e-02 -2.782949499999999854e-01 1.101526999999999923e+00 3.191127700000000011e+00 -4.204873499999999820e-01 -1.398087899999999939e+00 4.269186099999999762e-01 -8.696503300000000269e-01 -4.553310600000000097e-01 2.786245700000000158e-01 -4.882788900000000210e-01 -4.026857099999999967e+00 -3.829316099999999778e+00 -1.285781599999999969e+00 3.584652900000000031e+00 -4.932939700000000260e-01
|
|
||||||
|
До Ширина: | Высота: | Размер: 21 KiB |
|
До Ширина: | Высота: | Размер: 22 KiB |
@ -1 +0,0 @@
|
|||||||
3.64
|
|
||||||
|
До Ширина: | Высота: | Размер: 35 KiB |
@ -1 +0,0 @@
|
|||||||
0.4
|
|
||||||
|
До Ширина: | Высота: | Размер: 32 KiB |
@ -1 +0,0 @@
|
|||||||
3.07
|
|
||||||
|
До Ширина: | Высота: | Размер: 42 KiB |
|
До Ширина: | Высота: | Размер: 60 KiB |
|
До Ширина: | Высота: | Размер: 57 KiB |
|
До Ширина: | Высота: | Размер: 106 KiB |
|
До Ширина: | Высота: | Размер: 86 KiB |
|
До Ширина: | Высота: | Размер: 98 KiB |
|
До Ширина: | Высота: | Размер: 110 KiB |
|
До Ширина: | Высота: | Размер: 66 KiB |
|
До Ширина: | Высота: | Размер: 77 KiB |
@ -1,5 +0,0 @@
|
|||||||
------------Оценка качества AE2 С ПОМОЩЬЮ НОВЫХ МЕТРИК------------
|
|
||||||
Approx = 0.7333333333333333
|
|
||||||
Excess = 0.36363636363636365
|
|
||||||
Deficit = 0.0
|
|
||||||
Coating = 1.0
|
|
||||||
|
До Ширина: | Высота: | Размер: 45 KiB |
@ -1,282 +0,0 @@
|
|||||||
# Отчет по лабораторной работе №2
|
|
||||||
Юсуфов Юнус,Романов Мирон , А-01-22
|
|
||||||
## 1. Определили свой набор данных по таблице.
|
|
||||||
Бригада №9 -> k = 9 mod 3 = 0 -> Cardio
|
|
||||||
## 2. Подготовили программную среду Google Colaboratory для выполнения лабораторной работы.
|
|
||||||
```
|
|
||||||
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/cardio_train.txt
|
|
||||||
!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/data/cardio_test.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
### Задание 1.
|
|
||||||
|
|
||||||
## 1. В среде GoogleColab создалиновый блокнот(notebook). Импортировали необходимые для работы библиотеки и модули.
|
|
||||||
|
|
||||||
```
|
|
||||||
import numpy as np
|
|
||||||
import lab02_lib as lib
|
|
||||||
```
|
|
||||||
|
|
||||||
## 2. Сгенерировали индивидуальный набор двумерных данныхв пространстве признаковс координатами центра (k, k), где k–номер бригады. Вывели полученные данные на рисунок и в консоль.
|
|
||||||
|
|
||||||
```
|
|
||||||
# генерация датасета
|
|
||||||
# data=lib.datagen(9, 9, 1000, 2)
|
|
||||||
data = np.loadtxt('data.txt', dtype=float)
|
|
||||||
# вывод данных и размерности
|
|
||||||
print('Исходные данные:')
|
|
||||||
print(data)
|
|
||||||
print('Размерность данных:')
|
|
||||||
print(data.shape)
|
|
||||||
```
|
|
||||||
>Исходные данные:
|
|
||||||
>[[9.19152143 8.99994525]
|
|
||||||
>[9.04581739 9.01557436]
|
|
||||||
>[9.15556184 9.0895709 ]
|
|
||||||
>...
|
|
||||||
>[8.95859907 8.92197639]
|
|
||||||
>[9.00243424 8.96375469]
|
|
||||||
>[8.86636465 9.13183014]]
|
|
||||||
>Размерность данных:
|
|
||||||
>(1000, 2)
|
|
||||||
|
|
||||||
## 3. Создали и обучили автокодировщик AE1 простой архитектуры, выбрав небольшое количество эпох обучения. Зафиксировали значения, для будущего внесения в таблицу.
|
|
||||||
|
|
||||||
```
|
|
||||||
# обучение AE1
|
|
||||||
patience = 300
|
|
||||||
ae1_trained, IRE1, IREth1 = lib.create_fit_save_ae(data,'out/AE1.h5','out/AE1_ire_th.txt', 1000, True, patience)
|
|
||||||
|
|
||||||
# Построение графика ошибки реконструкции
|
|
||||||
lib.ire_plot('training', IRE1, IREth1, 'AE1')
|
|
||||||
```
|
|
||||||
* 5 Скрытых слоев
|
|
||||||
* 5 3 1 3 5
|
|
||||||
|
|
||||||
## 4. Зафиксировали ошибку MSE, на которой обучение завершилось. Построили график ошибки реконструкции обучающей выборки. Зафиксировали порог ошибки реконструкции – порог обнаружения аномалий.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* MSE_stop = 5.3137
|
|
||||||
* IREth1 = 3.6
|
|
||||||
|
|
||||||
## 5. Создали и обучили второй автокодировщик AE2 с усложненной архитектурой, задав большее количество эпох обучения.
|
|
||||||
|
|
||||||
```
|
|
||||||
# обучение AE2
|
|
||||||
ae2_trained, IRE2, IREth2 = lib.create_fit_save_ae(data,'out/AE2.h5','out/AE2_ire_th.txt', 3000, True, patience)
|
|
||||||
lib.ire_plot('training', IRE2, IREth2, 'AE2')
|
|
||||||
```
|
|
||||||
* 7 скрытых слоев
|
|
||||||
* 5 3 2 1 2 3 5
|
|
||||||
|
|
||||||
## 6. Зафиксировали ошибку MSE, на которой обучение завершилось. Построили график ошибки реконструкции обучающей выборки. Зафиксировали второй порог ошибки реконструкции – порог обнаружения аномалий.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* MSE_stop = 0.0103
|
|
||||||
* IREth1 = 0.4
|
|
||||||
|
|
||||||
## 7. Рассчитали характеристики качества обучения EDCA для AE1 и AE2. Визуализировали и сравнили области пространства признаков, распознаваемые автокодировщиками AE1 и AE2. Сделали вывод о пригодности AE1 и AE2 для качественного обнаружения аномалий.
|
|
||||||
|
|
||||||
* AE1
|
|
||||||
|
|
||||||
```
|
|
||||||
# построение областей покрытия и границ классов
|
|
||||||
# расчет характеристик качества обучения
|
|
||||||
numb_square = 20
|
|
||||||
xx, yy, Z1 = lib.square_calc(numb_square, data, ae1_trained, IREth1, '1', True)
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* EDCA AE1
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
* Оценка качества AE1
|
|
||||||
* IDEAL = 0. Excess: 12.636363636363637
|
|
||||||
* IDEAL = 0. Deficit: 0.0
|
|
||||||
* IDEAL = 1. Coating: 1.0
|
|
||||||
* summa: 1.0
|
|
||||||
* IDEAL = 1. Extrapolation precision (Approx): 0.07333333333333332
|
|
||||||
|
|
||||||
* AE2
|
|
||||||
|
|
||||||
```
|
|
||||||
# построение областей покрытия и границ классов
|
|
||||||
# расчет характеристик качества обучения
|
|
||||||
numb_square = 20
|
|
||||||
xx, yy, Z2 = lib.square_calc(numb_square, data, ae2_trained, IREth2, '2', True)
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* EDCA AE2
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
* Оценка качества AE2
|
|
||||||
* IDEAL = 0. Excess: 0.36363636363636365
|
|
||||||
* IDEAL = 0. Deficit: 0.0
|
|
||||||
* IDEAL = 1. Coating: 1.0
|
|
||||||
* summa: 1.0
|
|
||||||
* IDEAL = 1. Extrapolation precision (Approx): 0.7333333333333333
|
|
||||||
|
|
||||||
### Сравним области пространства признаков AE1 и AE2
|
|
||||||
|
|
||||||
```
|
|
||||||
# сравнение характеристик качества обучения и областей аппроксимации
|
|
||||||
lib.plot2in1(data, xx, yy, Z1, Z2)
|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
### Вывод по пункту.
|
|
||||||
AE1 не достаточно хорошо аппроксимирует область обучающих данных, что может значительно повлиять на результаты тестов. По сравнению с AE2, AE1 плохо ограничивает нашу область признаков с "левой" стороны.
|
|
||||||
|
|
||||||
## 8. Изучили сохраненный набор данных и пространство признаков. Создали тестовую выборку, состоящую из 4-ёх элементов, не входящих в обучающую выборку. Элементы выбраны так, чтобы AE1 распознавал их как норму, а AE2 детектировал как аномалии.
|
|
||||||
|
|
||||||
```
|
|
||||||
# загрузка тестового набора
|
|
||||||
data_test = np.loadtxt('/content/drive/MyDrive/Colab Notebooks/is_lab2/Lab02/data_test.txt', dtype=float)
|
|
||||||
print(data_test)
|
|
||||||
```
|
|
||||||
>[[8.1 8.5]
|
|
||||||
>[7.2 8. ]
|
|
||||||
>[9. 8. ]
|
|
||||||
>[8.5 9.5]]
|
|
||||||
|
|
||||||
## 9. Применили обученные автокодировщики AE1 и AE2 к тестовым данным и вывели значения ошибки реконструкции для каждого элемента тестовой выборки относительно порога.
|
|
||||||
|
|
||||||
```
|
|
||||||
# тестирование АE1
|
|
||||||
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')
|
|
||||||
```
|
|
||||||
>Аномалий не обнаружено
|
|
||||||

|
|
||||||
|
|
||||||
```
|
|
||||||
# тестирование АE2
|
|
||||||
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, 'AE1')
|
|
||||||
```
|
|
||||||
>i Labels IRE IREth
|
|
||||||
>0 [1.] [1.02] 0.4
|
|
||||||
>1 [1.] [2.05] 0.4
|
|
||||||
>2 [1.] [1.] 0.4
|
|
||||||
>3 [1.] [0.69] 0.4
|
|
||||||
>Обнаружено 4.0 аномалий
|
|
||||||

|
|
||||||
|
|
||||||
## 10. Визуализировали элементы обучающей и тестовой выборки в областях пространства признаков, распознаваемых автокодировщиками AE1 и AE2.
|
|
||||||
|
|
||||||
```
|
|
||||||
# построение областей аппроксимации и точек тестового набора
|
|
||||||
lib.plot2in1_anomaly(data, xx, yy, Z1, Z2, data_test)
|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
## 11. Результаты исследования занесли в таблицу:
|
|
||||||
|
|
||||||
| |Количество скрытых слоев|Количество нейронов в скрытых слоях|Количество эпох обучения|Ошибка MSE_stop|Порог ошибки реконструкции|Значение показателя Excess|Значение показателя Approx|Количество обнаруженных аномалий|
|
|
||||||
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|
|
||||||
|AE1|5|5 3 1 3 5|1000|5.3137|3.6|12.636363636363637|0.07333333333333332|0|
|
|
||||||
|AE2|7|5 3 2 1 2 3 5|3000|0.0103|0.4|0.36363636363636365|0.7333333333333333|4|
|
|
||||||
|
|
||||||
## 12. Сделали выводы о требованиях к:
|
|
||||||
|
|
||||||
* Данным обучения - необходима плотная выборка нормальных состояний без выбросов, покрывающая рабочую область (в эксперименте — 1000 точек вокруг (9, 9)), чтобы модель корректно восстанавливала типичные объекты.
|
|
||||||
* Архитектуре кодировщика - оптимальна глубокая симметричная структура с узким горлышком (5-3-2-1-2-3-5), обеспечивающая точную реконструкцию и устойчивые границы нормы.
|
|
||||||
* Количеству эпох обучения - требуется не менее 3000 эпох для данного набора данных; обучение в 1000 эпох оставляет высокую ошибку и не формирует надежный порог аномалий.
|
|
||||||
* Ошибке MSE_stop, приемлемой для останова обучения - ориентир на значения порядка 0.001 или 0.01 (0.0103 для AE2); более крупные значения, как 5.3137 у AE1, свидетельствуют о недообучении.
|
|
||||||
* Ошибке реконструкции обучающей выборки - целесообразно удерживать порог ниже 0.5 (IREth = 0.4 у AE2), тогда как порог 3.6 у AE1 приводит к пропуску аномалий.
|
|
||||||
* Характеристикам EDCA, для качественного обнаружения аномалий в данных - требуется минимальный Excess (<1) и высокая Approx (≈0.7); такие значения достигаются AE2, тогда как AE1 с Excess = 12.6 непригоден.
|
|
||||||
|
|
||||||
### Задание 2.
|
|
||||||
|
|
||||||
## 1. Изучили описание своего набора реальных данных, что он из себя представляет.
|
|
||||||
|
|
||||||
## 2. Загрузили многомерную обучающую выборку реальных данных cardio_train.txt. Изучили и загрузили тестовую выборку cardio_test.txt.
|
|
||||||
|
|
||||||
```
|
|
||||||
train = np.loadtxt('cardio_train.txt', dtype=float)
|
|
||||||
test = np.loadtxt('cardio_test.txt', dtype=float)
|
|
||||||
|
|
||||||
print('Исходные данные:')
|
|
||||||
print(train)
|
|
||||||
print('Размерность данных:')
|
|
||||||
print(train.shape)
|
|
||||||
print('Исходные данные:')
|
|
||||||
print(test)
|
|
||||||
print('Размерность данных:')
|
|
||||||
print(test.shape)
|
|
||||||
```
|
|
||||||
Исходные данные:
|
|
||||||
>[[ 0.00491231 0.69319077 -0.20364049 ... 0.23149795 -0.28978574 -0.49329397]
|
|
||||||
>[ 0.11072935 -0.07990259 -0.20364049 ... 0.09356344 -0.25638541 -0.49329397]
|
|
||||||
>[ 0.21654639 -0.27244466 -0.20364049 ... 0.02459619 -0.25638541 1.1400175 ]
|
|
||||||
>...
|
|
||||||
>[ 0.85144861 -0.91998844 -0.20364049 ... 0.57633422 -0.65718941 1.1400175 ]
|
|
||||||
>[ 0.85144861 -0.91998844 -0.20364049 ... 0.57633422 -0.62378908 -0.49329397]
|
|
||||||
>[ 1.0630827 -0.51148142 -0.16958144 ... 0.57633422 -0.65718941 -0.49329397]]
|
|
||||||
>Размерность данных:
|
|
||||||
>(1654, 21)
|
|
||||||
|
|
||||||
## 3. Создали и обучили автокодировщик с подходящей для данных
|
|
||||||
архитектурой. Выбрали необходимое количество эпох обучения.
|
|
||||||
|
|
||||||
```
|
|
||||||
# обучение AE3
|
|
||||||
patience = 7500
|
|
||||||
from time import time
|
|
||||||
start = time()
|
|
||||||
ae3_trained, IRE3, IREth3 = lib.create_fit_save_ae(train,'out/AE3.h5','out/AE3_ire_th.txt', 120000, False, 7500, early_stopping_delta = 0.001)
|
|
||||||
print("Время на обучение: ", time() - start)
|
|
||||||
|
|
||||||
# Построение графика ошибки реконструкции
|
|
||||||
lib.ire_plot('training', IRE3, IREth3, 'AE3')
|
|
||||||
```
|
|
||||||
* 15 скрытых слоев
|
|
||||||
* 21 19 17 15 13 11 9 7 9 11 13 15 17 19 21
|
|
||||||
|
|
||||||
## 4. Зафиксировали ошибку MSE, на которой обучение завершилось. Построили график ошибки реконструкции обучающей выборки. Зафиксировали порог ошибки реконструкции – порог обнаружения аномалий.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* MSE_stop = 0.0319
|
|
||||||
* IREth1 = 3.07
|
|
||||||
|
|
||||||
## 5. Подали тестовую выборку на вход обученного автокодировщика для обнаружения аномалий. Вывели график ошибки реконструкции элементов тестовой выборки относительно порога.
|
|
||||||
|
|
||||||
```
|
|
||||||
# тестирование АE3
|
|
||||||
predicted_labels3, ire3 = lib.predict_ae(ae3_trained, test, IREth3)
|
|
||||||
lib.anomaly_detection_ae(predicted_labels3, ire3, IREth3)
|
|
||||||
lib.ire_plot('test', ire3, IREth3, 'AE3')
|
|
||||||
```
|
|
||||||
>Обнаружено 94.0 аномалий
|
|
||||||
>Accuracy: 86.23%
|
|
||||||

|
|
||||||
|
|
||||||
|Dataset name|Количество скрытых слоев|Количество нейронов в скрытых слоях|Количество эпох обучения|Ошибка MSE_stop|Порог ошибки реконструкции|% Обнаруженных аномалий|
|
|
||||||
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|
|
||||||
|Cardio|15|21 19 17 15 13 11 9 7 9 11 13 15 17 19 21|85000|0.0319|3.07|86.23|
|
|
||||||
|
|
||||||
## 6. Сделали выводы о требованиях к:
|
|
||||||
|
|
||||||
* Данным обучения - необходима масштабированная и очищенная выборка, охватывающая все состояния нормы; 1654 нормализованных записей cardio_train дают устойчивую оценку распределения.
|
|
||||||
* Архитектуре кодировщика - эффективна глубокая симметричная сеть, которая сжимает 21 признаковое измерение до компактного латентного пространства и поддерживает высокую точность восстановления.
|
|
||||||
* Количеству эпох обучения - требуется длительное обучение (100к+ эпох) с ранней остановкой; меньшая длительность не успевает снизить ошибку реконструкции до приемлемого уровня.
|
|
||||||
* Ошибке MSE_stop, приемлемой для останова обучения - ориентир на значения порядка 0.01 (0.0319), после чего дальнейшее обучение дает минимальный прирост качества при заметном росте времени.
|
|
||||||
* Ошибке реконструкции обучающей выборки, для качественного обнаружения аномалий в случае, когда размерность пространства признаков высока - порог около 3.0 (IREth = 3.07) позволяет выделять ~86% аномалий без чрезмерного количества ложных срабатываний; важно калибровать порог по распределению ошибок.
|
|
||||||
|
До Ширина: | Высота: | Размер: 292 B |
|
До Ширина: | Высота: | Размер: 6.7 KiB |
@ -0,0 +1,9 @@
|
|||||||
|
## Лабораторныа работа №3
|
||||||
|
|
||||||
|
## Распознавание изображений
|
||||||
|
|
||||||
|
* [Задание](IS_Lab03_2023.pdf)
|
||||||
|
|
||||||
|
* [Методические указания](IS_Lab03_Metod_2023.pdf)
|
||||||
|
|
||||||
|
* <a href="https://youtube.com/playlist?list=PLZDCDMGmelH-pHt-Ij0nImVrOmj8DYKbB" target="_blank">Плейлист с видео о сверточных сетях</a>
|
||||||
|
До Ширина: | Высота: | Размер: 12 KiB |
|
До Ширина: | Высота: | Размер: 12 KiB |
|
До Ширина: | Высота: | Размер: 7.0 KiB |
|
До Ширина: | Высота: | Размер: 32 KiB |
|
До Ширина: | Высота: | Размер: 68 KiB |
|
До Ширина: | Высота: | Размер: 28 KiB |
|
До Ширина: | Высота: | Размер: 18 KiB |
|
До Ширина: | Высота: | Размер: 36 KiB |
@ -1,466 +0,0 @@
|
|||||||
# Отчёт по лабораторной работе №3
|
|
||||||
Романов Мирон, Юсуфов Юнус, А-01-22
|
|
||||||
Бригада №9
|
|
||||||
|
|
||||||
# Задание 1
|
|
||||||
|
|
||||||
## 1) В среде Google Colab создали новый блокнот (notebook). Импортировали необходимые для работы библиотеки и модули.
|
|
||||||
|
|
||||||
```python
|
|
||||||
import os
|
|
||||||
os.chdir('/content/drive/MyDrive/Colab Notebooks/IS_LR3')
|
|
||||||
# импорт модулей
|
|
||||||
from tensorflow import keras
|
|
||||||
from tensorflow.keras import layers
|
|
||||||
from tensorflow.keras.models import Sequential
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
import numpy as np
|
|
||||||
from sklearn.metrics import classification_report, confusion_matrix
|
|
||||||
from sklearn.metrics import ConfusionMatrixDisplay
|
|
||||||
```
|
|
||||||
|
|
||||||
## 2) Загрузили набор данных MNIST, содержащий размеченные изображения рукописных цифр.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# загрузка датасета
|
|
||||||
from keras.datasets import mnist
|
|
||||||
(X_train, y_train), (X_test, y_test) = mnist.load_data()
|
|
||||||
```
|
|
||||||
|
|
||||||
## 3) Разбили набор данных на обучающие и тестовые данные в соотношении 60 000:10 000 элементов. Параметр random_state выбрали равным (4k – 1) = 15, где k = 4 – номер бригады. Вывели размерности полученных обучающих и тестовых массивов данных.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# создание своего разбиения датасета
|
|
||||||
from sklearn.model_selection import train_test_split
|
|
||||||
|
|
||||||
# объединяем в один набор
|
|
||||||
X = np.concatenate((X_train, X_test))
|
|
||||||
y = np.concatenate((y_train, y_test))
|
|
||||||
|
|
||||||
# разбиваем по вариантам
|
|
||||||
X_train, X_test, y_train, y_test = train_test_split(X, y,
|
|
||||||
test_size = 10000,
|
|
||||||
train_size = 60000,
|
|
||||||
random_state = 35)
|
|
||||||
# вывод размерностей
|
|
||||||
print('Shape of X train:', X_train.shape)
|
|
||||||
print('Shape of y train:', y_train.shape)
|
|
||||||
print('Shape of X test:', X_test.shape)
|
|
||||||
print('Shape of y test:', y_test.shape)
|
|
||||||
```
|
|
||||||
```
|
|
||||||
Shape of X train: (60000, 28, 28)
|
|
||||||
Shape of y train: (60000,)
|
|
||||||
Shape of X test: (10000, 28, 28)
|
|
||||||
Shape of y test: (10000,)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 4) Провели предобработку данных: привели обучающие и тестовые данные к формату, пригодному для обучения сверточной нейронной сети. Входные данные принимают значения от 0 до 1, метки цифр закодированы по принципу «one-hot encoding». Вывели размерности предобработанных обучающих и тестовых массивов данных.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# Зададим параметры данных и модели
|
|
||||||
num_classes = 10
|
|
||||||
input_shape = (28, 28, 1)
|
|
||||||
|
|
||||||
# Приведение входных данных к диапазону [0, 1]
|
|
||||||
X_train = X_train / 255
|
|
||||||
X_test = X_test / 255
|
|
||||||
|
|
||||||
# Расширяем размерность входных данных, чтобы каждое изображение имело
|
|
||||||
# размерность (высота, ширина, количество каналов)
|
|
||||||
|
|
||||||
X_train = np.expand_dims(X_train, -1)
|
|
||||||
X_test = np.expand_dims(X_test, -1)
|
|
||||||
print('Shape of transformed X train:', X_train.shape)
|
|
||||||
print('Shape of transformed X test:', X_test.shape)
|
|
||||||
|
|
||||||
# переведем метки в one-hot
|
|
||||||
y_train = keras.utils.to_categorical(y_train, num_classes)
|
|
||||||
y_test = keras.utils.to_categorical(y_test, num_classes)
|
|
||||||
print('Shape of transformed y train:', y_train.shape)
|
|
||||||
print('Shape of transformed y test:', y_test.shape)
|
|
||||||
```
|
|
||||||
```
|
|
||||||
Shape of transformed X train: (60000, 28, 28, 1)
|
|
||||||
Shape of transformed X test: (10000, 28, 28, 1)
|
|
||||||
Shape of transformed y train: (60000, 10)
|
|
||||||
Shape of transformed y test: (10000, 10)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 5) Реализовали модель сверточной нейронной сети и обучили ее на обучающих данных с выделением части обучающих данных в качестве валидационных. Вывели информацию об архитектуре нейронной сети.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# создаем модель
|
|
||||||
model = Sequential()
|
|
||||||
model.add(layers.Conv2D(32, kernel_size=(3, 3), activation="relu", input_shape=input_shape))
|
|
||||||
model.add(layers.MaxPooling2D(pool_size=(2, 2)))
|
|
||||||
model.add(layers.Conv2D(64, kernel_size=(3, 3), activation="relu"))
|
|
||||||
model.add(layers.MaxPooling2D(pool_size=(2, 2)))
|
|
||||||
model.add(layers.Dropout(0.5))
|
|
||||||
model.add(layers.Flatten())
|
|
||||||
model.add(layers.Dense(num_classes, activation="softmax"))
|
|
||||||
|
|
||||||
model.summary()
|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
```python
|
|
||||||
# компилируем и обучаем модель
|
|
||||||
batch_size = 512
|
|
||||||
epochs = 15
|
|
||||||
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])
|
|
||||||
model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, validation_split=0.1)
|
|
||||||
```
|
|
||||||
```
|
|
||||||
Epoch 15/15
|
|
||||||
106/106 ━━━━━━━━━━━━━━━━━━━━ 39s 370ms/step - accuracy: 0.9864 - loss: 0.0406 - val_accuracy: 0.9875 - val_loss: 0.0384
|
|
||||||
```
|
|
||||||
## 6) Оценили качество обучения на тестовых данных. Вывели значение функции ошибки и значение метрики качества классификации на тестовых данных.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# Оценка качества работы модели на тестовых данных
|
|
||||||
scores = model.evaluate(X_test, y_test)
|
|
||||||
print('Loss on test data:', scores[0])
|
|
||||||
print('Accuracy on test data:', scores[1])
|
|
||||||
```
|
|
||||||
```
|
|
||||||
313/313 ━━━━━━━━━━━━━━━━━━━━ 4s 12ms/step - accuracy: 0.9876 - loss: 0.0382
|
|
||||||
Loss on test data: 0.03760423883795738
|
|
||||||
Accuracy on test data: 0.9884999990463257
|
|
||||||
```
|
|
||||||
|
|
||||||
## 7) Подали на вход обученной модели два тестовых изображения. Вывели изображения, истинные метки и результаты распознавания.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# вывод тестового изображения и результата распознавания
|
|
||||||
for n in [67, 69]:
|
|
||||||
result = model.predict(X_test[n:n+1])
|
|
||||||
print('NN output:', result)
|
|
||||||
plt.imshow(X_test[n].reshape(28,28), cmap=plt.get_cmap('gray'))
|
|
||||||
plt.show()
|
|
||||||
print('Real mark: ', np.argmax(y_test[n]))
|
|
||||||
print('NN answer: ', np.argmax(result))
|
|
||||||
```
|
|
||||||

|
|
||||||
```
|
|
||||||
Real mark: 3
|
|
||||||
NN answer: 3
|
|
||||||
```
|
|
||||||

|
|
||||||
```
|
|
||||||
Real mark: 1
|
|
||||||
NN answer: 1
|
|
||||||
```
|
|
||||||
|
|
||||||
## 8) Вывели отчет о качестве классификации тестовой выборки и матрицу ошибок для тестовой выборки.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# истинные метки классов
|
|
||||||
true_labels = np.argmax(y_test, axis=1)
|
|
||||||
# предсказанные метки классов
|
|
||||||
predicted_labels = np.argmax(model.predict(X_test), axis=1)
|
|
||||||
# отчет о качестве классификации
|
|
||||||
print(classification_report(true_labels, predicted_labels))
|
|
||||||
# вычисление матрицы ошибок
|
|
||||||
conf_matrix = confusion_matrix(true_labels, predicted_labels)
|
|
||||||
# отрисовка матрицы ошибок в виде "тепловой карты"
|
|
||||||
display = ConfusionMatrixDisplay(confusion_matrix=conf_matrix)
|
|
||||||
display.plot()
|
|
||||||
plt.show()
|
|
||||||
```
|
|
||||||
```
|
|
||||||
precision recall f1-score support
|
|
||||||
|
|
||||||
0 0.99 1.00 0.99 965
|
|
||||||
1 0.99 0.99 0.99 1115
|
|
||||||
2 0.99 0.99 0.99 1020
|
|
||||||
3 1.00 0.99 0.99 1075
|
|
||||||
4 0.99 0.99 0.99 959
|
|
||||||
5 0.98 0.99 0.99 909
|
|
||||||
6 0.99 0.99 0.99 970
|
|
||||||
7 0.98 0.99 0.99 1050
|
|
||||||
8 0.98 0.97 0.98 972
|
|
||||||
9 0.99 0.98 0.99 965
|
|
||||||
|
|
||||||
accuracy 0.99 10000
|
|
||||||
macro avg 0.99 0.99 0.99 10000
|
|
||||||
weighted avg 0.99 0.99 0.99 10000
|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
## 9) Загрузили, предобработали и подали на вход обученной нейронной сети собственное изображение, созданное при выполнении лабораторной работы №1. Вывели изображение и результат распознавания.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# загрузка собственного изображения
|
|
||||||
from PIL import Image
|
|
||||||
file_data = Image.open('2.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 = np.reshape(test_img, (1,28,28,1))
|
|
||||||
# распознавание
|
|
||||||
result = model.predict(test_img)
|
|
||||||
print('I think it\'s ', np.argmax(result))
|
|
||||||
```
|
|
||||||

|
|
||||||
```
|
|
||||||
I think it's 2
|
|
||||||
```
|
|
||||||
|
|
||||||
## 10) Загрузили с диска модель, сохраненную при выполнении лабораторной работы №1. Вывели информацию об архитектуре модели. Повторили для этой модели п. 6.
|
|
||||||
|
|
||||||
```python
|
|
||||||
model_lr1 = keras.models.load_model("/content/drive/MyDrive/Colab Notebooks/IS_LR3/best_model_2l_100_LR1.keras")
|
|
||||||
model_lr1.summary()
|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
```python
|
|
||||||
X_train, X_test, y_train, y_test = train_test_split(X, y,
|
|
||||||
test_size = 10000,
|
|
||||||
train_size = 60000,
|
|
||||||
random_state = 35)
|
|
||||||
num_pixels = X_train.shape[1] * X_train.shape[2]
|
|
||||||
X_train = X_train.reshape(X_train.shape[0], num_pixels) / 255
|
|
||||||
X_test = X_test.reshape(X_test.shape[0], num_pixels) / 255
|
|
||||||
print('Shape of transformed X train:', X_train.shape)
|
|
||||||
print('Shape of transformed X train:', X_test.shape)
|
|
||||||
|
|
||||||
# переведем метки в one-hot
|
|
||||||
y_train = keras.utils.to_categorical(y_train, num_classes)
|
|
||||||
y_test = keras.utils.to_categorical(y_test, num_classes)
|
|
||||||
print('Shape of transformed y train:', y_train.shape)
|
|
||||||
print('Shape of transformed y test:', y_test.shape)
|
|
||||||
```
|
|
||||||
```
|
|
||||||
Shape of transformed X train: (60000, 784)
|
|
||||||
Shape of transformed X train: (10000, 784)
|
|
||||||
Shape of transformed y train: (60000, 10)
|
|
||||||
Shape of transformed y test: (10000, 10)
|
|
||||||
```
|
|
||||||
|
|
||||||
```python
|
|
||||||
# Оценка качества работы модели на тестовых данных
|
|
||||||
scores = model_lr1.evaluate(X_test, y_test)
|
|
||||||
print('Loss on test data:', scores[0])
|
|
||||||
print('Accuracy on test data:', scores[1])
|
|
||||||
```
|
|
||||||
```
|
|
||||||
313/313 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.9166 - loss: 0.3003
|
|
||||||
Loss on test data: 0.3069264590740204
|
|
||||||
Accuracy on test data: 0.9150000214576721
|
|
||||||
```
|
|
||||||
|
|
||||||
## 11) Сравнили обученную модель сверточной сети и наилучшую модель полносвязной сети из лабораторной работы №1 по следующим показателям:
|
|
||||||
## - количество настраиваемых параметров в сети
|
|
||||||
## - количество эпох обучения
|
|
||||||
## - качество классификации тестовой выборки.
|
|
||||||
## Сделали выводы по результатам применения сверточной нейронной сети для распознавания изображений.
|
|
||||||
|
|
||||||
Таблица 1:
|
|
||||||
|
|
||||||
| Модель | Количество настраиваемых параметров | Количество эпох обучения | Качество классификации тестовой выборки |
|
|
||||||
|----------|-------------------------------------|---------------------------|-----------------------------------------|
|
|
||||||
| Сверточная | 34 826 | 15 | accuracy:0.988 ; loss:0.038 |
|
|
||||||
| Полносвязная | 79,512 | 50 | accuracy:0.915 ; loss:0.307 |
|
|
||||||
|
|
||||||
## Вывод
|
|
||||||
По результатам применения сверточной НС, а также по результатам таблицы 1 делаем выводы, что сверточная НС лучше справляется с задачами распознования изображений, чем полносвязная - имеет меньше настраиваемых параметров, быстрее обучается, имеет лучшие показатели качества.
|
|
||||||
|
|
||||||
# Задание 2
|
|
||||||
|
|
||||||
В новом блокноте выполнили п. 2–8 задания 1, изменив набор данных MNIST на CIFAR-10, содержащий размеченные цветные изображения объектов, разделенные на 10 классов.
|
|
||||||
При этом:
|
|
||||||
* в п. 3 разбиение данных на обучающие и тестовые произвели в соотношении 50 000:10 000
|
|
||||||
* после разбиения данных (между п. 3 и 4) вывели 25 изображений из обучающей выборки с подписями классов
|
|
||||||
* в п. 7 одно из тестовых изображений должно распознаваться корректно, а другое – ошибочно.
|
|
||||||
|
|
||||||
## 1) Загрузили набор данных CIFAR-10, содержащий цветные изображения размеченные на 10 классов: самолет, автомобиль, птица, кошка, олень, собака, лягушка, лошадь, корабль, грузовик.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# загрузка датасета
|
|
||||||
from keras.datasets import cifar10
|
|
||||||
|
|
||||||
(X_train, y_train), (X_test, y_test) = cifar10.load_data()
|
|
||||||
```
|
|
||||||
|
|
||||||
## 2) Разбили набор данных на обучающие и тестовые данные в соотношении 50 000:10 000 элементов. Параметр random_state выбрали равным (4k – 1)=15, где k=4 –номер бригады. Вывели размерности полученных обучающих и тестовых массивов данных.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# создание своего разбиения датасета
|
|
||||||
|
|
||||||
# объединяем в один набор
|
|
||||||
X = np.concatenate((X_train, X_test))
|
|
||||||
y = np.concatenate((y_train, y_test))
|
|
||||||
|
|
||||||
# разбиваем по вариантам
|
|
||||||
X_train, X_test, y_train, y_test = train_test_split(X, y,
|
|
||||||
test_size = 10000,
|
|
||||||
train_size = 50000,
|
|
||||||
random_state = 15)
|
|
||||||
# вывод размерностей
|
|
||||||
print('Shape of X train:', X_train.shape)
|
|
||||||
print('Shape of y train:', y_train.shape)
|
|
||||||
print('Shape of X test:', X_test.shape)
|
|
||||||
print('Shape of y test:', y_test.shape)
|
|
||||||
```
|
|
||||||
```
|
|
||||||
Shape of X train: (50000, 32, 32, 3)
|
|
||||||
Shape of y train: (50000, 1)
|
|
||||||
Shape of X test: (10000, 32, 32, 3)
|
|
||||||
Shape of y test: (10000, 1)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Вывели 25 изображений из обучающей выборки с подписью классов.
|
|
||||||
|
|
||||||
```python
|
|
||||||
class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer',
|
|
||||||
'dog', 'frog', 'horse', 'ship', 'truck']
|
|
||||||
|
|
||||||
plt.figure(figsize=(10,10))
|
|
||||||
for i in range(25):
|
|
||||||
plt.subplot(5,5,i+1)
|
|
||||||
plt.xticks([])
|
|
||||||
plt.yticks([])
|
|
||||||
plt.grid(False)
|
|
||||||
plt.imshow(X_train[i])
|
|
||||||
plt.xlabel(class_names[y_train[i][0]])
|
|
||||||
plt.show()
|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
## 3) Провели предобработку данных: привели обучающие и тестовые данные к формату, пригодному для обучения сверточной нейронной сети. Входные данные принимают значения от 0 до 1, метки цифр закодированы по принципу «one-hot encoding». Вывели размерности предобработанных обучающих и тестовых массивов данных.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# Зададим параметры данных и модели
|
|
||||||
num_classes = 10
|
|
||||||
input_shape = (32, 32, 3)
|
|
||||||
|
|
||||||
# Приведение входных данных к диапазону [0, 1]
|
|
||||||
X_train = X_train / 255
|
|
||||||
X_test = X_test / 255
|
|
||||||
|
|
||||||
print('Shape of transformed X train:', X_train.shape)
|
|
||||||
print('Shape of transformed X test:', X_test.shape)
|
|
||||||
|
|
||||||
# переведем метки в one-hot
|
|
||||||
y_train = keras.utils.to_categorical(y_train, num_classes)
|
|
||||||
y_test = keras.utils.to_categorical(y_test, num_classes)
|
|
||||||
print('Shape of transformed y train:', y_train.shape)
|
|
||||||
print('Shape of transformed y test:', y_test.shape)
|
|
||||||
```
|
|
||||||
```
|
|
||||||
Shape of transformed X train: (50000, 32, 32, 3)
|
|
||||||
Shape of transformed X test: (10000, 32, 32, 3)
|
|
||||||
Shape of transformed y train: (50000, 10)
|
|
||||||
Shape of transformed y test: (10000, 10)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 4) Реализовали модель сверточной нейронной сети и обучили ее на обучающих данных с выделением части обучающих данных в качестве валидационных. Вывели информацию об архитектуре нейронной сети.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# создаем модель
|
|
||||||
model = Sequential()
|
|
||||||
model.add(layers.Conv2D(32, kernel_size=(3, 3), activation="relu", input_shape=input_shape))
|
|
||||||
model.add(layers.MaxPooling2D(pool_size=(2, 2)))
|
|
||||||
model.add(layers.Conv2D(64, kernel_size=(3, 3), activation="relu"))
|
|
||||||
model.add(layers.MaxPooling2D(pool_size=(2, 2)))
|
|
||||||
model.add(layers.Conv2D(128, kernel_size=(3, 3), activation="relu"))
|
|
||||||
model.add(layers.MaxPooling2D(pool_size=(2, 2)))
|
|
||||||
model.add(layers.Flatten())
|
|
||||||
model.add(layers.Dense(128, activation='relu'))
|
|
||||||
model.add(layers.Dropout(0.5))
|
|
||||||
model.add(layers.Dense(num_classes, activation="softmax"))
|
|
||||||
model.summary()
|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
```python
|
|
||||||
# компилируем и обучаем модель
|
|
||||||
batch_size = 64
|
|
||||||
epochs = 50
|
|
||||||
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])
|
|
||||||
model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, validation_split=0.1)
|
|
||||||
```
|
|
||||||
Epoch 50/50
|
|
||||||
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.8971 - loss: 0.2795 - val_accuracy: 0.7118 - val_loss: 1.3672
|
|
||||||
|
|
||||||
## 5) Оценили качество обучения на тестовых данных. Вывели значение функции ошибки и значение метрики качества классификации на тестовых данных.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# Оценка качества работы модели на тестовых данных
|
|
||||||
scores = model.evaluate(X_test, y_test)
|
|
||||||
print('Loss on test data:', scores[0])
|
|
||||||
print('Accuracy on test data:', scores[1])
|
|
||||||
```
|
|
||||||
```
|
|
||||||
313/313 ━━━━━━━━━━━━━━━━━━━━ 4s 9ms/step - accuracy: 0.7178 - loss: 1.3206
|
|
||||||
Loss on test data: 1.3243911266326904
|
|
||||||
Accuracy on test data: 0.7181000113487244
|
|
||||||
```
|
|
||||||
|
|
||||||
## 6) Подали на вход обученной модели два тестовых изображения. Вывели изображения, истинные метки и результаты распознавания.
|
|
||||||
|
|
||||||
```python
|
|
||||||
# вывод двух тестовых изображений и результатов распознавания
|
|
||||||
|
|
||||||
for n in [67,3]:
|
|
||||||
result = model.predict(X_test[n:n+1])
|
|
||||||
print('NN output:', result)
|
|
||||||
|
|
||||||
plt.imshow(X_test[n].reshape(32,32,3), cmap=plt.get_cmap('gray'))
|
|
||||||
plt.show()
|
|
||||||
print('Real mark: ', np.argmax(y_test[n]))
|
|
||||||
print('NN answer: ', np.argmax(result))
|
|
||||||
```
|
|
||||||

|
|
||||||
```
|
|
||||||
Real mark: 2
|
|
||||||
NN answer: 2
|
|
||||||
```
|
|
||||||

|
|
||||||
```
|
|
||||||
Real mark: 4
|
|
||||||
NN answer: 3
|
|
||||||
```
|
|
||||||
|
|
||||||
## 7) Вывели отчет о качестве классификации тестовой выборки и матрицу ошибок для тестовой выборки.
|
|
||||||
|
|
||||||
```python
|
|
||||||
true_labels = np.argmax(y_test, axis=1)
|
|
||||||
predicted_labels = np.argmax(model.predict(X_test), axis=1)
|
|
||||||
print(classification_report(true_labels, predicted_labels, target_names=class_names))
|
|
||||||
conf_matrix = confusion_matrix(true_labels, predicted_labels)
|
|
||||||
fig, ax = plt.subplots(figsize=(6, 6))
|
|
||||||
disp = ConfusionMatrixDisplay(confusion_matrix=conf_matrix,display_labels=class_names)
|
|
||||||
disp.plot(ax=ax, xticks_rotation=45)
|
|
||||||
plt.tight_layout()
|
|
||||||
plt.show()
|
|
||||||
```
|
|
||||||
```
|
|
||||||
precision recall f1-score support
|
|
||||||
|
|
||||||
airplane 0.71 0.75 0.73 982
|
|
||||||
automobile 0.80 0.84 0.82 1011
|
|
||||||
bird 0.66 0.62 0.64 974
|
|
||||||
cat 0.54 0.55 0.55 1022
|
|
||||||
deer 0.69 0.70 0.69 1016
|
|
||||||
dog 0.62 0.64 0.63 935
|
|
||||||
frog 0.78 0.76 0.77 1029
|
|
||||||
horse 0.79 0.72 0.75 989
|
|
||||||
ship 0.78 0.84 0.81 998
|
|
||||||
truck 0.81 0.75 0.78 1044
|
|
||||||
|
|
||||||
accuracy 0.72 10000
|
|
||||||
macro avg 0.72 0.72 0.72 10000
|
|
||||||
weighted avg 0.72 0.72 0.72 10000
|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
## Вывод
|
|
||||||
По результатам классификации датасета CIFAR-10 созданной сверточной моделью можно сделать вывод, что она довольно неплохо справилась с задачей. Полученные метрики оценки качества имеют показатели в районе 0.72
|
|
||||||
|
До Ширина: | Высота: | Размер: 6.5 KiB |
|
До Ширина: | Высота: | Размер: 123 KiB |
@ -0,0 +1,7 @@
|
|||||||
|
## Лабораторныа работа №4
|
||||||
|
|
||||||
|
## Распознавание последовательностей
|
||||||
|
|
||||||
|
* [Задание](IS_Lab04_2023.pdf)
|
||||||
|
|
||||||
|
* [Методические указания](IS_Lab04_Metod_2023.pdf)
|
||||||
|
До Ширина: | Высота: | Размер: 20 KiB |
@ -1,339 +0,0 @@
|
|||||||
# Отчёт по лабораторной работе №4
|
|
||||||
Романов Мирон, Юсуфов Юнус, А-01-22
|
|
||||||
Бригада №9
|
|
||||||
|
|
||||||
### Подготовка среды
|
|
||||||
|
|
||||||
```python
|
|
||||||
import os
|
|
||||||
os.chdir('/content/drive/MyDrive/Colab Notebooks/IS_LR4')
|
|
||||||
```
|
|
||||||
|
|
||||||
## 1) В среде Google Colab создали новый блокнот (notebook). Настроили блокнот для работы с аппаратным ускорителем GPU
|
|
||||||
|
|
||||||
```python
|
|
||||||
import tensorflow as tf
|
|
||||||
device_name = tf.test.gpu_device_name()
|
|
||||||
if device_name != '/device:GPU:0':
|
|
||||||
raise SystemError('GPU device not found')
|
|
||||||
print('Found GPU at: {}'.format(device_name))
|
|
||||||
```
|
|
||||||
```
|
|
||||||
Found GPU at: /device:GPU:0
|
|
||||||
```
|
|
||||||
|
|
||||||
## 2) Загрузили набор данных IMDb, содержащий оцифрованные отзывы на фильмы, размеченные на два класса: позитивные и негативные
|
|
||||||
|
|
||||||
```python
|
|
||||||
# загрузка датасета
|
|
||||||
from keras.datasets import imdb
|
|
||||||
vocabulary_size = 5000
|
|
||||||
index_from = 3
|
|
||||||
(X_train, y_train), (X_test, y_test) = imdb.load_data(path="imdb.npz",
|
|
||||||
num_words=vocabulary_size,
|
|
||||||
skip_top=0,
|
|
||||||
maxlen=None,
|
|
||||||
seed=35,
|
|
||||||
start_char=1,
|
|
||||||
oov_char=2,
|
|
||||||
index_from=index_from
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
Shape of X train: (25000,)
|
|
||||||
Shape of y train: (25000,)
|
|
||||||
Shape of X test: (25000,)
|
|
||||||
Shape of y test: (25000,)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 3) Вывесли один отзыв из обучающего множества в виде списка индексов слов. Преобразовали список индексов в текст и вывести отзыв в виде текста. Вывели длину отзыва. Вывели метку класса данного отзыва и название класса (1 – Positive, 0 – Negative)
|
|
||||||
|
|
||||||
```python
|
|
||||||
# создание словаря для перевода индексов в слова
|
|
||||||
# заргузка словаря "слово:индекс"
|
|
||||||
word_to_id = imdb.get_word_index()
|
|
||||||
# уточнение словаря
|
|
||||||
word_to_id = {key:(value + index_from) for key,value in word_to_id.items()}
|
|
||||||
word_to_id["<PAD>"] = 0
|
|
||||||
word_to_id["<START>"] = 1
|
|
||||||
word_to_id["<UNK>"] = 2
|
|
||||||
word_to_id["<UNUSED>"] = 3
|
|
||||||
# создание обратного словаря "индекс:слово"
|
|
||||||
id_to_word = {value:key for key,value in word_to_id.items()}
|
|
||||||
|
|
||||||
review_indices = X_train[19]
|
|
||||||
print("Review - index:\n", review_indices)
|
|
||||||
|
|
||||||
review_text = " ".join(id_to_word.get(i, "?") for i in review_indices)
|
|
||||||
print("\nReview - text:\n", review_text)
|
|
||||||
|
|
||||||
print("\nReview length:", len(review_indices))
|
|
||||||
|
|
||||||
label = y_train[19]
|
|
||||||
class_name = "Positive" if label == 1 else "Negative"
|
|
||||||
print("Class label:", label, "| Class name:", class_name)
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
Review - index:
|
|
||||||
[1, 608, 50, 26, 84, 37, 144, 24, 67, 14, 20, 10, 10, 300, 92, 67, 12, 48, 25, 92, 40, 2006, 42, 328, 1285, 241, 92, 40, 12, 48, 25, 188, 4154, 34, 4, 2, 342, 92, 67, 12, 48, 25, 181, 6, 622, 3783, 20, 10, 10, 4, 360, 7, 25, 521, 92, 1135, 8, 67, 736, 349, 45, 163, 45, 2812, 45, 6, 1917, 2, 7, 175, 78, 3783, 4896, 573, 8, 132, 2552, 2, 83, 4715, 312, 1285, 92, 2457, 4, 3028, 11, 3850, 364, 1317, 253, 7, 2, 2, 1022, 4106, 5, 4391, 2, 17, 73, 17, 6, 378, 7, 1139, 4139, 531, 34, 2, 3409, 5, 2, 2, 52, 8, 67, 4841, 2, 397, 157, 99, 13, 1498, 32, 4, 96, 143, 1254, 2, 643, 916, 21, 52]
|
|
||||||
|
|
||||||
Review - text:
|
|
||||||
<START> ok there are people who should not see this movie br br 1 don't see it if you don't like satire or black humour 2 don't like it if you got offended by the <UNK> 3 don't see it if you want a serious superhero movie br br the rest of you run don't walk to see mystery men it's funny it's quirky it's a delightful <UNK> of every bad superhero cliche known to man occasional <UNK> into junior high humour don't ruin the tongue in cheek low key fun of <UNK> <UNK> ben stiller and hank <UNK> as well as a couple of amusing smaller parts by <UNK> rush and <UNK> <UNK> good to see louise <UNK> getting work too i laughed all the way through utterly <UNK> somewhat weird but good
|
|
||||||
|
|
||||||
Review length: 134
|
|
||||||
Class label: 1 | Class name: Positive
|
|
||||||
```
|
|
||||||
|
|
||||||
## 4) Вывели максимальную и минимальную длину отзыва в обучающем множестве
|
|
||||||
|
|
||||||
```python
|
|
||||||
print("Max review length:", len(max(X_train, key=len)))
|
|
||||||
print("Min review length:", len(min(X_train, key=len)))
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
Max review length: 2494
|
|
||||||
Min review length: 11
|
|
||||||
```
|
|
||||||
|
|
||||||
## 5) Провели предобработку данных
|
|
||||||
|
|
||||||
```python
|
|
||||||
# предобработка данных
|
|
||||||
from tensorflow.keras.utils import pad_sequences
|
|
||||||
max_words = 500
|
|
||||||
X_train = pad_sequences(X_train, maxlen=max_words, value=0, padding='pre', truncating='post')
|
|
||||||
X_test = pad_sequences(X_test, maxlen=max_words, value=0, padding='pre', truncating='post')
|
|
||||||
```
|
|
||||||
|
|
||||||
## 6) Повторили п. 4
|
|
||||||
|
|
||||||
```python
|
|
||||||
print("Max review length:", len(max(X_train, key=len)))
|
|
||||||
print("Min review length:", len(min(X_train, key=len)))
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
Max review length: 500
|
|
||||||
Min review length: 500
|
|
||||||
```
|
|
||||||
|
|
||||||
## 7) Повторили п. 3. Сделали вывод о том, как отзыв преобразовался после предобработки
|
|
||||||
|
|
||||||
```python
|
|
||||||
review_indices = X_train[19]
|
|
||||||
print("Review - index:\n", review_indices)
|
|
||||||
|
|
||||||
review_text = " ".join(id_to_word.get(i, "?") for i in review_indices)
|
|
||||||
print("\nReview - text:\n", review_text)
|
|
||||||
|
|
||||||
print("\nReview length:", len(review_indices))
|
|
||||||
|
|
||||||
label = y_train[19]
|
|
||||||
class_name = "Positive" if label == 1 else "Negative"
|
|
||||||
print("Class label:", label, "| Class name:", class_name)
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
Review - index:
|
|
||||||
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
||||||
0 0 1 608 50 26 84 37 144 24 67 14 20 10
|
|
||||||
10 300 92 67 12 48 25 92 40 2006 42 328 1285 241
|
|
||||||
92 40 12 48 25 188 4154 34 4 2 342 92 67 12
|
|
||||||
48 25 181 6 622 3783 20 10 10 4 360 7 25 521
|
|
||||||
92 1135 8 67 736 349 45 163 45 2812 45 6 1917 2
|
|
||||||
7 175 78 3783 4896 573 8 132 2552 2 83 4715 312 1285
|
|
||||||
92 2457 4 3028 11 3850 364 1317 253 7 2 2 1022 4106
|
|
||||||
5 4391 2 17 73 17 6 378 7 1139 4139 531 34 2
|
|
||||||
3409 5 2 2 52 8 67 4841 2 397 157 99 13 1498
|
|
||||||
32 4 96 143 1254 2 643 916 21 52]
|
|
||||||
|
|
||||||
Review - text:
|
|
||||||
<PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <START> ok there are people who should not see this movie br br 1 don't see it if you don't like satire or black humour 2 don't like it if you got offended by the <UNK> 3 don't see it if you want a serious superhero movie br br the rest of you run don't walk to see mystery men it's funny it's quirky it's a delightful <UNK> of every bad superhero cliche known to man occasional <UNK> into junior high humour don't ruin the tongue in cheek low key fun of <UNK> <UNK> ben stiller and hank <UNK> as well as a couple of amusing smaller parts by <UNK> rush and <UNK> <UNK> good to see louise <UNK> getting work too i laughed all the way through utterly <UNK> somewhat weird but good
|
|
||||||
|
|
||||||
Review length: 500
|
|
||||||
Class label: 1 | Class name: Positive
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
После предобработки длина всех отзывов была приведена к 500 словам. Отзывы с меньшим количеством слов, чем 500, были дополнены нулями.
|
|
||||||
```
|
|
||||||
|
|
||||||
## 8) Вывели предобработанные массивы обучающих и тестовых данных и их размерности
|
|
||||||
|
|
||||||
```python
|
|
||||||
print("Preprocessed training set X_train (first 3 examples):")
|
|
||||||
print(X_train[:3])
|
|
||||||
|
|
||||||
print("\nPreprocessed training set X_test (first 3 examples):")
|
|
||||||
print(X_test[:3])
|
|
||||||
|
|
||||||
|
|
||||||
print("Size of X_train:", X_train.shape)
|
|
||||||
print("Size of y_train:", y_train.shape)
|
|
||||||
print("Size of X_test:", X_test.shape)
|
|
||||||
print("Size of y_test:", y_test.shape)
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
Preprocessed training set X_train (first 3 examples):
|
|
||||||
[[ 0 0 0 ... 8 591 1462]
|
|
||||||
[ 0 0 0 ... 28 35 585]
|
|
||||||
[ 0 0 0 ... 11 2 2]]
|
|
||||||
|
|
||||||
Preprocessed training set X_test (first 3 examples):
|
|
||||||
[[ 0 0 0 ... 14 356 22]
|
|
||||||
[ 0 0 0 ... 301 87 22]
|
|
||||||
[ 0 0 0 ... 46 7 158]]
|
|
||||||
Size of X_train: (25000, 500)
|
|
||||||
Size of y_train: (25000,)
|
|
||||||
Size of X_test: (25000, 500)
|
|
||||||
Size of y_test: (25000,)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 9) Реализовали модель рекуррентной нейронной сети, состоящей из слоев Embedding, LSTM, Dropout, Dense, и обучили ее на обучающих данных с выделением части обучающих данных в качестве валидационных. Вывели информацию об архитектуре нейронной сети. Добилсь качества обучения по метрике accuracy не менее 0.8.
|
|
||||||
|
|
||||||
```python
|
|
||||||
from tensorflow.keras.models import Sequential
|
|
||||||
from tensorflow.keras.layers import Embedding, LSTM, Dropout, Dense
|
|
||||||
|
|
||||||
|
|
||||||
model = Sequential()
|
|
||||||
model.add(Embedding(
|
|
||||||
input_dim=vocabulary_size + index_from,
|
|
||||||
output_dim=32,
|
|
||||||
input_length=max_words
|
|
||||||
))
|
|
||||||
model.add(LSTM(67))
|
|
||||||
model.add(Dropout(0.5))
|
|
||||||
model.add(Dense(1, activation='sigmoid'))
|
|
||||||
|
|
||||||
model.compile(
|
|
||||||
loss='binary_crossentropy',
|
|
||||||
optimizer='adam',
|
|
||||||
metrics=['accuracy']
|
|
||||||
)
|
|
||||||
|
|
||||||
model.build(input_shape=(None, max_words))
|
|
||||||
model.summary()
|
|
||||||
|
|
||||||
# Обучение модели
|
|
||||||
history = model.fit(
|
|
||||||
X_train,
|
|
||||||
y_train,
|
|
||||||
epochs=5,
|
|
||||||
batch_size=64,
|
|
||||||
validation_split=0.2,
|
|
||||||
verbose=1
|
|
||||||
)
|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
```
|
|
||||||
Epoch 1/5
|
|
||||||
313/313 ━━━━━━━━━━━━━━━━━━━━ 13s 25ms/step - accuracy: 0.6426 - loss: 0.6635 - val_accuracy: 0.6048 - val_loss: 0.6939
|
|
||||||
Epoch 2/5
|
|
||||||
313/313 ━━━━━━━━━━━━━━━━━━━━ 17s 24ms/step - accuracy: 0.5151 - loss: 0.7202 - val_accuracy: 0.6084 - val_loss: 0.6766
|
|
||||||
Epoch 3/5
|
|
||||||
313/313 ━━━━━━━━━━━━━━━━━━━━ 7s 23ms/step - accuracy: 0.5620 - loss: 0.6804 - val_accuracy: 0.7786 - val_loss: 0.5682
|
|
||||||
Epoch 4/5
|
|
||||||
313/313 ━━━━━━━━━━━━━━━━━━━━ 10s 22ms/step - accuracy: 0.7489 - loss: 0.5362 - val_accuracy: 0.7468 - val_loss: 0.5106
|
|
||||||
Epoch 5/5
|
|
||||||
313/313 ━━━━━━━━━━━━━━━━━━━━ 8s 24ms/step - accuracy: 0.8451 - loss: 0.3959 - val_accuracy: 0.8556 - val_loss: 0.3406
|
|
||||||
```
|
|
||||||
|
|
||||||
## Вывели значение метрики качества классификации на тестовых
|
|
||||||
данных
|
|
||||||
|
|
||||||
```python
|
|
||||||
test_loss, test_accuracy = model.evaluate(X_test, y_test, verbose=0)
|
|
||||||
|
|
||||||
print("Classification results")
|
|
||||||
print(f"Test accuracy: {test_accuracy:.4f}")
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
Classification results
|
|
||||||
Test accuracy: 0.8519
|
|
||||||
```
|
|
||||||
|
|
||||||
## Вывели отчет о качестве классификации тестовой выборки
|
|
||||||
|
|
||||||
```python
|
|
||||||
y_score = model.predict(X_test)
|
|
||||||
y_pred = [1 if y_score[i,0]>=0.5 else 0 for i in range(len(y_score))]
|
|
||||||
from sklearn.metrics import classification_report
|
|
||||||
print(classification_report(y_test, y_pred, labels = [0, 1], target_names=['Negative', 'Positive']))
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
precision recall f1-score support
|
|
||||||
|
|
||||||
Negative 0.85 0.86 0.85 12500
|
|
||||||
Positive 0.85 0.85 0.85 12500
|
|
||||||
|
|
||||||
accuracy 0.85 25000
|
|
||||||
macro avg 0.85 0.85 0.85 25000
|
|
||||||
weighted avg 0.85 0.85 0.85 25000
|
|
||||||
```
|
|
||||||
|
|
||||||
## Построили ROC-кривую по результату обработки тестовой
|
|
||||||
выборки и вычислить площадь под ROC-кривой (AUC ROC)
|
|
||||||
|
|
||||||
```python
|
|
||||||
from sklearn.metrics import roc_curve, auc
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
fpr, tpr, thresholds = roc_curve(y_test, y_score)
|
|
||||||
plt.plot(fpr, tpr)
|
|
||||||
plt.grid()
|
|
||||||
plt.xlabel('False Positive Rate')
|
|
||||||
plt.ylabel('True Positive Rate')
|
|
||||||
plt.title('ROC')
|
|
||||||
plt.show()
|
|
||||||
print('Area under ROC is', auc(fpr, tpr))
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
```
|
|
||||||
Area under ROC is 0.925042592
|
|
||||||
```
|
|
||||||
## 11) Выводы по результатам применения рекуррентной нейронной сети.
|
|
||||||
|
|
||||||
```
|
|
||||||
В данной лабораторной работе была реализована и обучена рекуррентная нейронная сеть с использованием слоя LSTM для задачи классификации тональности отзывов на основе данных IMDb. После этапа предобработки, состоявшего из приведения длины текстов к одному размеру и преобразования слов в числовые индексы, модель смогла качественно решать поставленную задачу.
|
|
||||||
|
|
||||||
Результаты эксперимента показали, что точность на тестовой выборке составляет примерно 86%, то есть примерно 86% отзывов классифицируются верно. Классификационный отчёт с метриками precision, recall и f1-score продемонстрировал, что модель одинаково хорошо справляется как с положительными, так и с отрицательными отзывами.
|
|
||||||
|
|
||||||
Анализ ROC-кривой и значения AUC ROC (примерно 0.93) подтвердил высокую эффективность модели в различении двух классов отзывов.
|
|
||||||
|
|
||||||
В итоге, применение LSTM-рекуррентной нейронной сети оказалось удачным выбором для анализа тональности текста. Модель хорошо выявляет смысловые зависимости в последовательностях и достигает высокого качества классификации, что делает её пригодной для таких практических задач, как фильтрация, анализ эмоциональной окраски и обработка пользовательских отзывов.
|
|
||||||
```
|
|
||||||
|
До Ширина: | Высота: | Размер: 21 KiB |