<jupyter_start><jupyter_text>Import библиотек<jupyter_code>import cv2, os, time, h5py
import numpy as np



import pandas as pd
from PIL import Image
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Model, Sequential, load_model
from tensorflow.keras.layers import MaxPooling2D, Conv2D,  Input, Conv2DTranspose, concatenate, SpatialDropout1D, Conv1D
from tensorflow.keras.layers import Dense, Dropout, BatchNormalization, Embedding, Flatten, Activation, Reshape, MaxPooling1D
from tensorflow.keras.layers import LSTM, GRU, SimpleRNN, CuDNNLSTM, CuDNNGRU, Bidirectional, SeparableConv1D, GlobalAveragePooling1D, GlobalAveragePooling2D
from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.keras.optimizers import Adam, RMSprop
from tensorflow.keras.losses import CosineSimilarity
from tensorflow.keras import backend as K
from tensorflow.keras import utils
from google.colab import drive
drive.mount('/content/drive')<jupyter_output><empty_output><jupyter_text>Распаковка файлов<jupyter_code>!unzip /content/drive/My\ Drive/Test_Classification/test_task/test_proj.zip<jupyter_output>Archive:  /content/drive/My Drive/Test_Classification/test_task/test_proj.zip
   creating: test_proj/
   creating: test_proj/test/
   creating: test_proj/test/43_cup_yogurt_blackberry/
  inflating: test_proj/data/37_curd_cereals/000129.jpg<jupyter_text>Подключение репозитория из GitHub<jupyter_code>!git clone https://github.com/sabeninvv/Curd2DNet.git
#"Упасть" в репозиторий Curd2DNet
%cd Curd2DNet
#Проверка, что упали туда, куда надо
!pwd<jupyter_output>/content/Curd2DNet<jupyter_text>Импорт модуля goToCurd из репозитория Curd2DNet<jupyter_code>path_to_dir_Curd2DNet = None

try: 
  if path_to_dir_Curd2DNet:
    try:
      import sys
      sys.path.append(path_to_dir_Curd2DNet)
      import goToCurd
      print('Модуль goToCurd успешно подключен.')
    except:
      print('Введите корректный путь к сохранённому репозиторию Curd2DNet.') 
  else:
    import goToCurd
    print('Модуль goToCurd успешно подключен.')
except:
  print('Не найден путь к сохранённому репозиторию Curd2DNet.')
  print('Введите корректный путь к сохранённому репозиторию Curd2DNet.')<jupyter_output>Модуль goToCurd успешно подключен.<jupyter_text>Обработка данных<jupyter_code>#Предобработка данных
#Кадрирование, изменение размера и перевод в Grey изображений
#Перевод изобрадений в тензор (150,150,2)
#
#pic_in_dir = False. Т.е. в главной директории есть поддиректории с изображениями
#pic_in_dir = True. Т.е. в главной директории есть только изображения
#num_pics_train, num_pics_test - список количества данных в каждом классе

main_dirpatch = '/content/test_proj/data'
num_pics_train, db = goToCurd.dataInputPreprocess(main_dirpatch, pic_in_dir = False)    

main_dirpatch = '/content/test_proj/test'
num_pics_test, db_test = goToCurd.dataInputPreprocess(main_dirpatch, pic_in_dir = False)  
#Создание выборки X_Train, y_Train, X_Test, y_Test.
#Балансирование выборки X_Train, y_Train.
#При балансирование, происходит перемешивание выборки и
#ограничение данных в каждом классе до slice_

X_Train, y_Train = goToCurd.makeXYdata(db, slice_ = min(num_pics_train))
X_Test, y_Test = goToCurd.makeXYdata(db_test, slice_ = None)
print(X_Train.shape, y_Train.shape)
print(X_Test.shape, y_Test.shape)
#Создание и компиляция модели по шаблону
#Подключение и загрузка весов из репозитория
#Проверка точности модели

model = goToCurd.createModel()
model = goToCurd.getWeightsModel(model, pathWeights=None)
loss, acc = model.evaluate(X_Test,  y_Test, verbose=2)
#Отображение архитектуры модели
utils.plot_model(model, show_shapes=True)
#Создание Confusion Matrix: 
#All по горизонтали - количество данных, 
#остальные ячейки - % predict. Те. сколько изображений этого класса 
#были отнесены сетью к данному классу по отношению к общему кол-ву изображений класса.
#
#Пример для X_Test, y_Test

goToCurd.getConfMatrix(model, X_Test, y_Test, num_pics_test)
#Пример для X_Train_All, y_Train_All
X_Train_All, y_Train_All = goToCurd.makeXYdata(db, slice_ = None)

#Создание Confusion Matrix: 
#All по горизонтали - количество данных, 
#остальные ячейки - % predict. Те. сколько изображений этого класса 
#были отнесены сетью к данному классу по отношению к общему кол-ву изображений класса.
goToCurd.getConfMatrix(model=model, 
                       X_Test=X_Train_All, 
                       y_Test=y_Train_All, 
                       num_pics_test=num_pics_train)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.07507705856450902, 'fraction_numerical': 0.008806693086745927, 'mean_word_length': 5.740356083086054, 'pattern_counts': {'":': 0, '<': 18, '<?xml version=': 0, '>': 18, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '590554', 'license': 'Unlicense', 'n_tokens_mistral': 1826, 'n_tokens_neox': 1927, 'n_words': 378, 'path': 'TestTaskFromTheRevotail.ipynb', 'repo_name': 'sabeninvv/Curd2DNet', 'size': '4542'}