Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
47 / 44 / 3
Регистрация: 02.11.2019
Сообщений: 187
1

Ошибка ValueError в NumPy: shapes not aligned

16.01.2021, 16:40. Просмотров 1989. Ответов 1
Метки нет (Все метки)

Добрый день! Я хочу сделать алгоритм распознавания изображений помощью только numpy и PIL. При выполнении кода вылезает ошибка:
Код
Traceback (most recent call last):
  File "index.py", line 39, in <module>
    synaptic_weights += dot(training_set_inputs.T, (training_set_outputs - output) * output * (1 - output))
  File "<__array_function__ internals>", line 5, in dot
ValueError: shapes (400,16,1) and (16,16) not aligned: 1 (dim 2) != 16 (dim 0)
Поможете исправить? Вот полный код:

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
from numpy import exp, array, random, dot, squeeze, asarray
from PIL import Image
 
images = []
for k in range(8):
    im = Image.open(f'learn\\yes\\{k + 1}.png', 'r')
    a = list(im.getdata())
    pixel_values = []
    for i in a:
        pixel_values.append((i[0] + i[1] + i[2] / 3) / 1000)
    images.append(pixel_values)
    im = Image.open(f'learn\\no\\{k + 1}.png', 'r')
    a = list(im.getdata())
    pixel_values = []
    for i in a:
        pixel_values.append((i[0] + i[1] + i[2] / 3) / 1000)
    images.append(pixel_values)
 
im = Image.open(f'test\\1.png', 'r')
a = list(im.getdata())
pixel_values = []
for i in a:
    pixel_values.append((i[0] + i[1] + i[2] / 3) / 1000)
 
print(*images, sep='\n', end='\n\n')
print(pixel_values)
# print(pixel_values3)
 
training_set_inputs = array([images])
training_set_outputs = array([[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]]).T
random.seed(1)
print('processing...')
 
synaptic_weights = squeeze(asarray(3 * random.random((400, 1)) - 1))
 
for iteration in range(2):
    print(f'starting iteration {iteration + 1}')
    output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weights))))
    synaptic_weights += dot(training_set_inputs.T, (training_set_outputs - output) * output * (1 - output))
    print('done!')
 
a = 1 / (1 + exp(-(dot(array(pixel_values), synaptic_weights))))[0]
print(a)
if a > 0.6:
    print('yes')
else:
    print('no')
P.S. размер изображений одинаковый - 20*20 пикселей.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2021, 16:40
Ответы с готовыми решениями:

ValueError: shapes (100,784) and (0,1) not aligned
Не могу понять из-за чего возникает ошибка : shapes (200,784) and (0,1) not aligned: 784 (dim 1)...

ValueError: shapes (100,784) and (100,1) not aligned: 784 (dim 1) != 100 (dim 0)
Разбираюсь с книгой Тарика Рашида &quot;Создаем нейронную сеть&quot; совершенно не зная питона (думал, напишу...

Ошибка ValueError: shapes (288144,2) and (3,) not aligned: 2 (dim 1) != 3 (dim 0)
Использую следующий код: X = df.iloc].values # plot data X_std = np.copy(X) X_std = (X -...

Shapes are not aligned
Разбираюсь с нейросетями Python. Делал примерно по этой статье, тот пример, что в конце. Получаю...

1
856 / 572 / 157
Регистрация: 07.11.2019
Сообщений: 1,329
16.01.2021, 18:58 2
У вас не совпадают размерности массивой, которые используются в 39 строке. Попробуйте перед 39 строкой сделать np.squeeze(training_set_inputs)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2021, 18:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

NumPy ValueError
import numpy as np n = 5 A = np.zeros((n,n), dtype=np.int_) for i in range(n): ...

Ошибка ValueError: ordinal must be >= 1
Ошибка ValueError: ordinal must be &gt;= 1 в строке pred.predicted_mean.plot(ax=ax, label='One-step...

Ошибка: ValueError: invalid literal for int() with base 10
Всем привет! Есть код: while True: message = &quot;Введите возраст &quot; message += &quot;\nИли 'quit'...

Ошибка: ValueError: invalid literal for int() with base 10: 'ads'
number = int(input('Введи число: ')) try: print('Молодец!') except ValueError: print('Я...

Ошибка кода: builtins.ValueError: invalid literal for int() with base 10
Вот мой код: m = int(input()) all_ = set(input() for i in range(m)) was = set(input() for j in...

Объясните, почему возникает ошибка: ValueError: all the input array dimensions except for the concatenation axis must ma
Провожу оптимизацию функции на Python при помощи...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.