Как графически отобразить все нейроны в виде графа?

Рейтинг: 0Ответов: 0Опубликовано: 04.07.2023

Основная проблема заключается в том, что не хватает знаний, как можно графически показать в отдельном окне, желательно с интеграцией в pyQt5, нейроны в виде графа, которые получились в процессе обучения. То есть, графически показать их связи между собой. Ниже представлен код

import tensorflow as tf
import pandas as pd
import random
from tabulate import tabulate
data = {'student': ['Дмитрий', 'Вячеслав', 'Артем', 'Олег', 'Андрей'],
        'avg_grade': [2.4, 4.4, 2.3, 2.9, 3.0],
        'pull-ups': [15, 3, 7, 10, 9],
        'uniforms': [1, 9, 3, 3, 7],
        'class': ['A', 'B', 'C', 'A', 'A']}
# преобразуем данные в DataFrame
    df = pd.DataFrame(data)

    # определяем параметры модели
    input_size = 3
    output_size = 3
    hidden_size = 10

    # создаем модель обучения с учителем
    model = tf.keras.Sequential([
        tf.keras.layers.Dense(hidden_size, activation='relu', input_shape=(input_size,)),
        tf.keras.layers.Dense(hidden_size, activation='relu'),
        tf.keras.layers.Dense(output_size, activation='softmax')
    ])

    # компилируем модель
    model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

    # разделяем данные на обучающую и тестовую выборки
    X_train = df[['avg_grade', 'pull-ups', 'uniforms']]
    y_train = pd.get_dummies(df['class'])
    X_test = X_train.sample(frac=0.5)
    y_test = y_train.loc[X_test.index]
    X_train = X_train.drop(X_test.index)
    y_train = y_train.drop(X_test.index)

    # обучаем модель на обучающей выборке
    model.fit(X_train, y_train, epochs=1000)

    # определяем класс студента на основе его параметров
    student = {'avg_grade': 4.3, 'pull-ups': 15, 'uniforms': 4}
    input_data = [[student['avg_grade'], student['pull-ups'], student['uniforms']]]
    output_data = model.predict(input_data)
    class_index = tf.math.argmax(output_data, axis=1).numpy()[0]
    class_list = ['A', 'B', 'C']
    class_tf = class_list[class_index]

    # создаем таблицу со случайными параметрами
    students = ['Дмитрий', 'Вячеслав', 'Артем', 'Олег', 'Андрей']
    data = []
    for student in students:
        avg_grade = round(random.uniform(2, 5), 1)
        pull_ups = random.randint(0, 25)
        uniforms = random.randint(0, 15)
        data.append([student, avg_grade, pull_ups, uniforms])

    # выводим таблицу в консоль
    print(tabulate(data, headers=['студент', 'Ср. балл', 'Подтягивания', 'Наряды']))

    # определяем класс для каждого студента
    classes = []
    for student_data in data:
        input_data = [[student_data[1], student_data[2], student_data[3]]]
        output_data = model.predict(input_data)
        class_index = tf.math.argmax(output_data, axis=1).numpy()[0]
        class_list = ['A', 'B', 'C']
        class_tf = class_list[class_index]
        classes.append(class_tf)
    ()
    # выделяем каждый класс своим цветом
    colors = {'A': '\033[91m', 'B': '\033[92m', 'C': '\033[93m'}
    for i in range(len(data)):
        class_color = colors[classes[i]]
        print(class_color + data[i][0] + ': ' + classes[i] + '\033[0m')

Ответы

Ответов пока нет.