Форум программистов, компьютерный форум, киберфорум
Python: ИИ, нейросети, ML, агенты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/10: Рейтинг темы: голосов - 10, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 08.04.2021
Сообщений: 1

Нейронная сеть для распознавания казахского алфавита

08.04.2021, 22:45. Показов 2180. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Мне нужно создать нейронную сеть, которая будет распознавать казахский алфавит на кириллице и переводить текст на казахский, но на латинице.
Создала 2 базы: одну для обучения и для проверки.
Классов вышло 82 (40 заглавных и 42 прописных букв). Когда запускаю код выдает ошибку IndexError: Target 81 is out of bounds.
Погуглила и поняла, что проблема в количестве классов. Где мне нужно указать что классов 81?



КОД

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import numpy as np
import torch
import gc
 
 
from torch.utils.data import Dataset, DataLoader
from torch.utils.data.dataset import Subset
from torchvision.datasets import ImageFolder
from torchvision.transforms import Compose, RandomResizedCrop, RandomVerticalFlip, RandomHorizontalFlip
from torchvision.transforms import ColorJitter, ToTensor, Normalize
 
img_size = 25
 
 
device = "cuda"
if not torch.cuda.is_available():
    device = "cpu"
 
train_transform = Compose([
    RandomHorizontalFlip(),
    RandomResizedCrop(size=img_size),
    ColorJitter(brightness=0.12),
    ToTensor(),
    Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5])
])
 
val_transform = Compose([
    RandomResizedCrop(size=img_size),
    ToTensor(),
    Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5])
])
 
batch_size = 80
num_workers = 8
 
train_dataset = ImageFolder(("dataset\\train"), transform=train_transform, target_transform=None)
val_dataset = ImageFolder(("dataset\\val"), transform=val_transform, target_transform=None)
 
pin_memory = "cuda" in device
train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True, num_workers=num_workers,
                          drop_last=True, pin_memory=pin_memory)
val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=True, num_workers=num_workers,
                        drop_last=False, pin_memory=pin_memory)
 
print("PyTorch version: {} | Device: {}".format(torch.__version__, device))
print("Train loader: num_batches={} | num_samples={}".format(len(train_loader), len(train_loader.sampler)))
print("Validation loader: num_batches={} | num_samples={}".format(len(val_loader), len(val_loader.sampler)))
 
import torch.nn as nn
from torchvision.models.squeezenet import squeezenet1_1
from torch.optim import SGD
 
model = squeezenet1_1(pretrained=False, num_classes=81)
model.classifier[-1] = nn.AdaptiveAvgPool2d(1)
model = model.to(device)
 
optimizer = SGD(model.parameters(), lr=0.01, momentum=0.5)
criterion = nn.CrossEntropyLoss()
 
from ignite.engine import Engine, _prepare_batch, create_supervised_trainer
 
def model_update(engine, batch):
    model.train()
    optimizer.zero_grad()
    x, y = _prepare_batch(batch, device=device)
    y_pred = model(x)
    loss = criterion(y_pred, y)
    loss.backward()
    optimizer.step()
    return loss.item()
 
trainer = Engine(model_update)
 
 
from ignite.engine import Events
 
log_interval = 50
if 'cpu' in device:
    log_interval = 5
 
@trainer.on(Events.ITERATION_COMPLETED)
def log_training_loss(engine):
    iteration = (engine.state.iteration - 1) % len(train_loader) + 1
    if iteration % log_interval == 0:
        print("Epoch[{}] Iteration[{}/{}] Loss: {:.4f}".format(engine.state.epoch, iteration, len(train_loader), engine.state.output))
torch.cuda.empty_cache()
if __name__ == '__main__':
    output = trainer.run(train_loader, max_epochs=81)



ОШИБКА


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
C:\Users\ПК\PycharmProjects\pythonProject\venv\Scripts\python.exe C:/Users/ПК/Desktop/Алия/ImageAIrrgrg.py
PyTorch version: 1.8.1+cpu | Device: cpu
Train loader: num_batches=162 | num_samples=13038
Validation loader: num_batches=82 | num_samples=6560
1
PyTorch version: 1.8.1+cpu | Device: cpu
Train loader: num_batches=162 | num_samples=13038
Validation loader: num_batches=82 | num_samples=6560
1
PyTorch version: 1.8.1+cpu | Device: cpu
Train loader: num_batches=162 | num_samples=13038
Validation loader: num_batches=82 | num_samples=6560
1
PyTorch version: 1.8.1+cpu | Device: cpu
Train loader: num_batches=162 | num_samples=13038
Validation loader: num_batches=82 | num_samples=6560
1
PyTorch version: 1.8.1+cpu | Device: cpu
Train loader: num_batches=162 | num_samples=13038
Validation loader: num_batches=82 | num_samples=6560
1
PyTorch version: 1.8.1+cpu | Device: cpu
Train loader: num_batches=162 | num_samples=13038
Validation loader: num_batches=82 | num_samples=6560
1
PyTorch version: 1.8.1+cpu | Device: cpu
Train loader: num_batches=162 | num_samples=13038
Validation loader: num_batches=82 | num_samples=6560
1
PyTorch version: 1.8.1+cpu | Device: cpu
Train loader: num_batches=162 | num_samples=13038
Validation loader: num_batches=82 | num_samples=6560
1
PyTorch version: 1.8.1+cpu | Device: cpu
Train loader: num_batches=162 | num_samples=13038
Validation loader: num_batches=82 | num_samples=6560
1
Current run is terminating due to exception: Target 81 is out of bounds.
Engine run is terminating due to exception: Target 81 is out of bounds.
Traceback (most recent call last):
  File "C:\UsersК\Desktopлия\ImageAIrrgrg.py", line 99, in <module>
    output = trainer.run(train_loader, max_epochs=81)
  File "C:\UsersК\PycharmProjects\pythonProject\venv\lib\site-packages\ignite\engine\engine.py", line 702, in run
    return self._internal_run()
  File "C:\UsersК\PycharmProjects\pythonProject\venv\lib\site-packages\ignite\engine\engine.py", line 775, in _internal_run
    self._handle_exception(e)
  File "C:\UsersК\PycharmProjects\pythonProject\venv\lib\site-packages\ignite\engine\engine.py", line 469, in _handle_exception
    raise e
  File "C:\UsersК\PycharmProjects\pythonProject\venv\lib\site-packages\ignite\engine\engine.py", line 745, in _internal_run
    time_taken = self._run_once_on_dataset()
  File "C:\UsersК\PycharmProjects\pythonProject\venv\lib\site-packages\ignite\engine\engine.py", line 850, in _run_once_on_dataset
    self._handle_exception(e)
  File "C:\UsersК\PycharmProjects\pythonProject\venv\lib\site-packages\ignite\engine\engine.py", line 469, in _handle_exception
    raise e
  File "C:\UsersК\PycharmProjects\pythonProject\venv\lib\site-packages\ignite\engine\engine.py", line 833, in _run_once_on_dataset
    self.state.output = self._process_function(self, self.state.batch)
  File "C:\UsersК\Desktopлия\ImageAIrrgrg.py", line 78, in model_update
    loss = criterion(y_pred, y)
  File "C:\UsersК\PycharmProjects\pythonProject\venv\lib\site-packages\torch\nn\modules\module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "C:\UsersК\PycharmProjects\pythonProject\venv\lib\site-packages\torch\nn\modules\loss.py", line 1047, in forward
    return F.cross_entropy(input, target, weight=self.weight,
  File "C:\UsersК\PycharmProjects\pythonProject\venv\lib\site-packages\torch\nn\functional.py", line 2693, in cross_entropy
    return nll_loss(log_softmax(input, 1), target, weight, None, ignore_index, None, reduction)
  File "C:\UsersК\PycharmProjects\pythonProject\venv\lib\site-packages\torch\nn\functional.py", line 2388, in nll_loss
    ret = torch._C._nn.nll_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index)
IndexError: Target 81 is out of bounds.
 
Process finished with exit code 1


ЗАРАНЕЕ СПАСИБО!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.04.2021, 22:45
Ответы с готовыми решениями:

Нейронная сеть для распознавания объектов на Python
Всем привет. Нужно написать СОБСТВЕННУЮ нейронную сеть для распознавания объектов на фотографии. Вот пример фотографии, на которой...

Однослойная нейронная сеть распознавания любых трех символов
Нужно реализовать на питоне однослойную нейронную сеть распознавания любых трех символов (букв). Библиотека может быть любая. и нужно...

Нейронная сеть для распознавания лиц
Всем привет!) Хочу посоветоватся с людьми которые знакомы с нейронными сетями. Суть дела такова, мне необходимо запрограмировать систему...

1
 Аватар для Freeden
107 / 104 / 34
Регистрация: 25.04.2012
Сообщений: 242
09.04.2021, 13:18
Может 33 строка:
Python
1
batch_size = 80
поменять на 81?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.04.2021, 13:18
Помогаю со студенческими работами здесь

Нейронная сеть для распознавания чисел
так и не нашел полезного гайда по созданию нс. задание такое: написать нейронку, которая может распознавать числа и обучить ее. т.е я...

Нейронная сеть для распознавания чисел
Народ, дано вот такое задание: Создать нейронную сеть для распознавания десяти чисел, по одному из следующих методов: 1) Трехслойная...

Нейронная сеть для распознавания речи
Доброго дня. Есть такая проблема: нужно написать нейронную сеть Хэмминга (или Хопфилда), чтобы она могла распознавать голосовую команду....

Нейронная сеть для распознавания образов
Нужно сделать нейронную сеть для распознавания образов. Кто делал такое? Где проще это делать? Где есть нормальные гайды? Думаю между...

Нейронная сеть для распознавания картинок в консоли
Пожалуйста, помогите, мне нужна нейронная сеть для распознавания картинок в консоли, не привык делать на форме, желательно под Visual...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru