【问题标题】:ValueError in NumPy: shapes not alignedNumPy 中的 ValueError:形状未对齐
【发布时间】:2021-01-18 00:14:50
【问题描述】:

以下代码显示错误“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')

【问题讨论】:

  • 在 (400,16,1) 数组上尝试 np.squeeze 以删除最后一个维度。您应该在代码中发布异常的位置。
  • 谢谢你,已经解决了。问题出在这里:training_set_inputs = array([images]) 而不是 training_set_inputs = array(images)

标签: python numpy python-imaging-library


【解决方案1】:

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

training_set_inputs = array([images]) 

而不是

training_set_inputs = array(images)

【讨论】:

    猜你喜欢
    • 2016-05-04
    • 2022-12-07
    • 1970-01-01
    • 2020-02-19
    • 2019-06-03
    • 2018-03-06
    • 2019-09-25
    • 1970-01-01
    • 2014-12-01
    相关资源
    最近更新 更多