[Ошибка типа 5 – решена — и суммируем остальные четыре типа ошибок] TypeError: __init__() принимает 1 позиционный аргумент, но задано 3

описание проблемы

При изучении Python для построения простого случая логистической регрессии в pytorch произошла ошибка, связанная с построением или созданием экземпляра класса — TypeError: init () принимает 1 позиционный аргумент, но было задано 3.
Затем я зашёл в интернет, чтобы найти причину и решение проблемы и передал статью. В статье блоггера были обнаружены следующие четыре типа ошибок, которые привели к той же ошибке, что и заголовок: Ссылка на статью блоггера: https://blog.csdn.net/weixin_52527544/article/details /126961910
1. Ошибка определения нейронной сети или класса или не создан экземпляр.

2. При определении или инициализации класса __init__ имеет тип __int__.

3. __init__ передает меньше параметров. (В статье не вдаются подробности. Предполагается, что во время создания экземпляра фактические параметры, передаваемые во время инициализации, не соответствуют виртуальным параметрам)

4. В коде загрузки или выгрузки данных (train_dataset = dsets.MNIST(root='./data', train=True, Transform=transforms.ToTensor(), download=True)) я забыл добавить после тензора преобразования ToTensor Скобки исчезли. Подробное объяснение смотрите в статье блогера, ссылка выше.

Анализ причин

Я сравнил эти четыре типа ошибок, и ни один из них не был причиной моей ошибки, но это натолкнуло меня на мысль: скорее всего, она была вызвана моей невнимательностью при наборе кода, поэтому я перепроверил код.
1) Сначала посмотрите на местоположение ошибки.
Местоположение ошибки находится в экземпляре. Строка кода:
model = LogisticRegrade (input_size, num_classes).
Полная ошибка:
Traceback (последний последний вызов):
Файл «/home/wr506/Desktop/Yaoyutong/lianxi-ceshi/pt04_ логистическая регрессия.py», строка 41, в
модели = LogisticReгрессия(input_size, num_classes)
Ошибка типа: init () принимает 1 позиционный аргумент, но задано 3

С первого взгляда ясно, что в месте ошибки в коде нет ошибки. Поэтому мне пришлось использовать точки останова для запуска кода для устранения ошибок.По логике, ошибка должна быть перед кодом создания экземпляра, поэтому я дал четыре точки останова, соответственно, в конце четырех мест: загрузка набора данных, загрузка набора данных и пакетная обработка, инициализация классов и создание экземпляров.

2) Получить местоположение проблемы.Пробежаться
по точкам останова и обнаружить, что нет запущенных результатов при построении и инициализации класса.
Затем внимательно посмотрите на этот код. Если вы посмотрите внимательно, вы легко обнаружите, что pycharm отличает определенный тип цвета шрифта от других кодов, включая __init__ как красный шрифт и __init_ в def init ( self, input_size, num_classes): _The метод не отмечен красным.Подводя итог, я нашел причину своей ошибки.

3) Измените
_init_ на __init__.

На данный момент решено.

おすすめ

転載: blog.csdn.net/Timeloser_tong/article/details/133377486