NumPy 中的 ValueError:形状未对齐

ValueError in NumPy: shapes not aligned

下面的代码显示错误“ValueError:形状 (400,16,1) 和 (16,16) 未对齐:1 (dim 2) != 16 (dim 0)”。我怎么解决这个问题?我只想使用 numpy 创建图像识别算法。测试图像大小为 20*20 像素。 (对不起我的英语,我说俄语)

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')

我已经解决了这个问题。问题出在这里:

training_set_inputs = array([images]) 

而不是

training_set_inputs = array(images)