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

Не могу исправить ошибку в программировании искусственного нейрона

15.03.2020, 20:25. Показов 1567. Ответов 4

Студворк — интернет-сервис помощи студентам
Добрый день!
Помогите, пожалуйста, исправить ошибку в коде.
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
def sigmoid_derivative(x): #представление производной сигмовидной функции
    return sigmoid(x)*(1-sigmoid(x))
def loss(y_pred, y):
    y_pred=y_pred.reshape(-1,1)
    y =np.array(y).reshape(-1,1)
    return 0.5*np.mean((y_pred-y)**2)
class Neuron:
    def __init__(self, w=None, b=0) :
        self.w=w
        self.b=b
    def activate (self, x):
        return sigmoid(x)
    def forward_pass(self, X): 
        n=X.shape[0]
        y_pred=np.zeros((n, 1))
        y_pred=self.activate(X @ self.w+self.b)
        return y_pred.reshape(-1,1)
    def backward_pass(self, X, y, y_pred, learning_rate=0.01):
        n=len(y)
        y=np.array(y).reshape(-1,1)
        sigma=self.activate(X @ self.w+self.b)
        self.w=self.w-learning_rate*(X.T@((sigma-y)*sigma*(1-sigma)))/n
        self.b=self.b-learning_rate*np.mean((sigma-y)* sigma*(1-sigma))
    def fit(self, X, y, num_epochs=5000):
        self.w=np.zeros((X.shape[1],1))
        self.b=0
        Loss_values=[]
        For I in range(num_epochs):
            y_pred=self.forward_pass(X)
            Loss_values.append(Loss(y_pred, y))
            self.backward_pass(X, y, y_pred)
        return Loss_values
w=np.array([0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]
b=0.0
X=np.array([[1, 0.75, 1, 0.5, 0, 0.5, 1, 1, 1],
            [0.6, 0.5, 0.75, 0, 0, 0, 0, 0.8, 1],
            [1, 1, 0.75, 0.5, 0.5, 0.5, 0.5, 1, 1],
            [0.6, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.6, 0.6],
            [0.6, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.6, 0.6],
            [1, 0.75, 0.75, 0, 0, 0.5, 0.5, 1, 1],
            [0.6, 0.5, 0.75, 0.5, 0, 0.5, 1, 1, 1],
            [0.6, 0.75, 0.5, 0, 0, 0, 0, 0.4, 0.4],
            [0.6, 0.75, 0.5, 0, 0, 0, 0, 1, 1],
            [0.6, 1, 0.25, 0, 0, 0.5, 0, 0.6,  0.8],
            [0.6, 0.75, 0.75, 0.5, 0.5, 0.5, 1, 1, 1],
            [0.6, 0.5, 0.25, 0, 0, 0, 0, 1, 1],
            [0.2, 0.5, 0.5, 0, 0, 0, 0, 0.2, 0.2],
            [0.6, 0.25, 0.75, 0, 0, 0, 0, 0.8, 0.4],
            [0.6, 1, 0.75, 0, 0, 1, 1, 1, 1],
            [0.6, 0.5,  0.5, 0, 0, 0.5, 0.5, 0.8, 0.8],
            [1, 1, 1, 0.5, 0, 0, 1, 0.2, 0.2],
            [0.8, 0.75, 0.75, 1, 1, 0.5, 0.5, 1, 1],
            [0.8, 0.75, 0.75, 0, 0, 0.5, 0.5, 0.8,  0.8],
            [1, 0.75, 0.75, 0, 0, 0.5, 0.5, 1, 1],
            [0.8, 0.75, 0.75,  0.5, 0.5, 0.5, 0.5, 1, 1],
            [0.6, 0.5, 0.75, 0, 0, 0.5, 0.5, 1, 1],
            [1, 1, 1, 0.5, 0.5, 1, 1, 1, 1],
            [0.8, 0.75, 1, 0.5, 0, 0.5, 1, 1, 1],
            [0.8, 0.25, 0.75, 0.5, 0, 0,  0.5, 1, 1],
            [0.6, 0.25, 0.5, 0, 0, 0.5, 0.5, 0.8, 1]])
y=np.array([1, 0.6, 1, 0.4, 0.4, 1, 0.4, 0.4, 0.8, 0.8, 0.6, 0.6, 0.2, 0.2, 1, 0.4, 1, 0.8, 0.6, 1, 0.8, 0.4, 1, 0.8, 0.4 0.8]).reshape(26,1)
neuron=Neuron(w, b)
y_pred=neuron.forward_pass(X)
neuron.backward_pass(X, y, y_pred)
print (“w_otn=” + str(((neuron.w-0.2)*1000))
Loss_values=neuron.fit(X,y)
Ошибка:

File "<ipython-input-1-1576577dd68b>", line 28
For I in range(num_epochs):
^
SyntaxError: invalid syntax
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2020, 20:25
Ответы с готовыми решениями:

Структура: Не могу понять, почему выдает ошибку и как собственно эту ошибку можно исправить?
Привет,не могу понять почему ошибку выдает и как сбстно эту ошибку можно исправить? #include &lt;stdio.h&gt; #include...

Зачем при обратном распространении умножать ошибку нейрона на производную функции активации?
Я учусь по книге Эндрю Траска &quot;Грокаем глубокое обучение&quot;. Никак не могу понять, зачем в процессе обратного распространения для вычисления...

Не могу исправить ошибку
SELECT детали.Название, (SELECT цена. FROM цена WHERE цена.&lt;=NOW()ORDER BY цена. DESC) AS цена FROM детали WHERE 1 В выделенных местах...

4
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
15.03.2020, 20:31
Цитата Сообщение от IrinaUmysyr Посмотреть сообщение
For I in range(num_epochs):
F поменяйте на f. И еще несколько ошибок:
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
import numpy as np #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
def sigmoid_derivative(x): #представление производной сигмовидной функции
    return sigmoid(x)*(1-sigmoid(x))
def loss(y_pred, y):
    y_pred=y_pred.reshape(-1,1)
    y =np.array(y).reshape(-1,1)
    return 0.5*np.mean((y_pred-y)**2)
class Neuron:
    def __init__(self, w=None, b=0) :
        self.w=w
        self.b=b
    def activate (self, x):
        return sigmoid(x)
    def forward_pass(self, X): 
        n=X.shape[0]
        y_pred=np.zeros((n, 1))
        y_pred=self.activate(X @ self.w+self.b)
        return y_pred.reshape(-1,1)
    def backward_pass(self, X, y, y_pred, learning_rate=0.01):
        n=len(y)
        y=np.array(y).reshape(-1,1)
        sigma=self.activate(X @ self.w+self.b)
        self.w=self.w-learning_rate*(X.T@((sigma-y)*sigma*(1-sigma)))/n
        self.b=self.b-learning_rate*np.mean((sigma-y)* sigma*(1-sigma))
    def fit(self, X, y, num_epochs=5000):
        self.w=np.zeros((X.shape[1],1))
        self.b=0
        Loss_values=[]
        for I in range(num_epochs):  #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            y_pred=self.forward_pass(X)
            Loss_values.append(Loss(y_pred, y))
            self.backward_pass(X, y, y_pred)
        return Loss_values
w=np.array([0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2])  #!!!!!!!!!!!!!!!!!!!!!!
b=0.0
X=np.array([[1, 0.75, 1, 0.5, 0, 0.5, 1, 1, 1],
            [0.6, 0.5, 0.75, 0, 0, 0, 0, 0.8, 1],
            [1, 1, 0.75, 0.5, 0.5, 0.5, 0.5, 1, 1],
            [0.6, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.6, 0.6],
            [0.6, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.6, 0.6],
            [1, 0.75, 0.75, 0, 0, 0.5, 0.5, 1, 1],
            [0.6, 0.5, 0.75, 0.5, 0, 0.5, 1, 1, 1],
            [0.6, 0.75, 0.5, 0, 0, 0, 0, 0.4, 0.4],
            [0.6, 0.75, 0.5, 0, 0, 0, 0, 1, 1],
            [0.6, 1, 0.25, 0, 0, 0.5, 0, 0.6,  0.8],
            [0.6, 0.75, 0.75, 0.5, 0.5, 0.5, 1, 1, 1],
            [0.6, 0.5, 0.25, 0, 0, 0, 0, 1, 1],
            [0.2, 0.5, 0.5, 0, 0, 0, 0, 0.2, 0.2],
            [0.6, 0.25, 0.75, 0, 0, 0, 0, 0.8, 0.4],
            [0.6, 1, 0.75, 0, 0, 1, 1, 1, 1],
            [0.6, 0.5,  0.5, 0, 0, 0.5, 0.5, 0.8, 0.8],
            [1, 1, 1, 0.5, 0, 0, 1, 0.2, 0.2],
            [0.8, 0.75, 0.75, 1, 1, 0.5, 0.5, 1, 1],
            [0.8, 0.75, 0.75, 0, 0, 0.5, 0.5, 0.8,  0.8],
            [1, 0.75, 0.75, 0, 0, 0.5, 0.5, 1, 1],
            [0.8, 0.75, 0.75,  0.5, 0.5, 0.5, 0.5, 1, 1],
            [0.6, 0.5, 0.75, 0, 0, 0.5, 0.5, 1, 1],
            [1, 1, 1, 0.5, 0.5, 1, 1, 1, 1],
            [0.8, 0.75, 1, 0.5, 0, 0.5, 1, 1, 1],
            [0.8, 0.25, 0.75, 0.5, 0, 0,  0.5, 1, 1],
            [0.6, 0.25, 0.5, 0, 0, 0.5, 0.5, 0.8, 1]])
y=np.array([1, 0.6, 1, 0.4, 0.4, 1, 0.4, 0.4, 0.8, 0.8, 0.6, 0.6, 0.2, 0.2, 1, 0.4, 1, 0.8, 0.6, 1, 0.8, 0.4, 1, 0.8, 0.4, 0.8]).reshape(26,1)  #!!!!!!!!!
neuron=Neuron(w, b)
y_pred=neuron.forward_pass(X)
neuron.backward_pass(X, y, y_pred)
print ("w_otn=" + str((neuron.w-0.2)*1000)) #!!!!!!!!!!!!!!!!!!
Loss_values=neuron.fit(X,y)
0
0 / 0 / 0
Регистрация: 15.03.2020
Сообщений: 3
15.03.2020, 20:33  [ТС]
Изменила, спасибо! Чувствую себя совсем дурочкой)
теперь выходит другая ошибка

File "<ipython-input-5-7434bf46cc82>", line 34
b=0.0
^
SyntaxError: invalid syntax
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
15.03.2020, 20:50
p.s. У меня вопрос:
Цитата Сообщение от IrinaUmysyr Посмотреть сообщение
y_pred=self.activate(X @ self.w+self.b)
Что означает значок @ ?

Добавлено через 1 минуту
Цитата Сообщение от IrinaUmysyr Посмотреть сообщение
b=0.0
^
SyntaxError: invalid syntax
В предыдущей строке не поставили закрывающую скобку.
Скопируйте мой код. Я подобные ошибки исправил.,
Но, все равно, получите ошибку исполнения в 17 строке ( y_pred = self.activate(X @ self.w + self.b)):
shapes (26,9) and (11,) not aligned: 9 (dim 1) != 11 (dim 0)
Исправить не могу, т.к. не понимаю этот синтаксис.
0
0 / 0 / 0
Регистрация: 15.03.2020
Сообщений: 3
15.03.2020, 21:13  [ТС]
Цитата Сообщение от zss Посмотреть сообщение
В предыдущей строке не поставили закрывающую скобку.
Скопируйте мой код. Я подобные ошибки исправил.
Спасибо!

Цитата Сообщение от zss Посмотреть сообщение
Что означает значок @ ?
Честно говоря, я не до конца понимаю, так как писала все это по образцу. Извините) Понимаю, что звучит очень глупо.

Теперь выходит новая ошибка:

NameError Traceback (most recent call last)
<ipython-input-14-9ebe746af9c2> in <module>
64 y=np.array([1, 0.6, 1, 0.4, 0.4, 1, 0.4, 0.4, 0.8, 0.8, 0.6, 0.6, 0.2, 0.2, 1, 0.4, 1, 0.8, 0.6, 1, 0.8, 0.4, 1, 0.8, 0.4, 0.8]).reshape(26,1)
65 neuron=Neuron(w, b)
---> 66 y_pred=neuron.forward_pass(X)
67 neuron.backward_pass(X, y, y_pred)
68 print ("w_otn=" + str((neuron.w-0.2)*1000))

<ipython-input-14-9ebe746af9c2> in forward_pass(self, X)
16 n=X.shape[0]
17 y_pred=np.zeros((n, 1))
---> 18 y_pred=self.activate(X@self.w+self.b)
19 return y_pred.reshape(-1,1)
20 def backward_pass(self, X, y, y_pred, learning_rate=0.01):

<ipython-input-14-9ebe746af9c2> in activate(self, x)
12 self.b=b
13 def activate (self, x):
---> 14 return sigmoid(x)
15 def forward_pass(self, X):
16 n=X.shape[0]

NameError: name 'sigmoid' is not defined
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.03.2020, 21:13
Помогаю со студенческими работами здесь

Не могу исправить ошибку
Версия 4.5 Код: using System; using System.Collections.Generic; using System.Linq; namespace Duplicates { class...

Не могу исправить ошибку
Доброго времени суток. Решаю задачку такую задачку: &quot;Вводится последовательность вещественных чисел, оканчивающаяся нулём и состоящая...

Не могу исправить ошибку
Условие: Описать структуру TOUR (страна, продолжительность тура, транспорт, цена). Введите данные в массив, состоящий из семи элементов...

Не могу исправить ошибку
Функция void textcolor(int x, int y, WORD color) { HANDLE stdOut = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord = { x, y }; ...

Не могу исправить ошибку
#include &lt;windows.h&gt; #include &lt;string.h&gt; #include &quot;sysmets.h&quot; LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru