无法将输入数组从形状(8,8,3)广播到形状(8,82048,3)

2024-10-01 13:44:18 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我再次尝试使用keras运行Inception v3微调,我认为数组有一些问题。我已经看过其他关于这些主题的帖子,但现在我不知道该怎么做。我没有太多的经验。因此,任何帮助都将不胜感激。在

这是完整的代码https://github.com/c3s4grod/PecuScope

出现的错误是:

回溯(最近一次呼叫):

File "C:\Users\Shangai\AppData\Local\conda\conda\envs\PSAI\lib\site-packages\keras\utils\data_utils.py", line 578, in get inputs = self.queue.get(block=True).get() File "C:\Users\Shangai\AppData\Local\conda\conda\envs\PSAI\lib\multiprocessing\pool.py", line 644, in get raise self._value File "C:\Users\Shangai\AppData\Local\conda\conda\envs\PSAI\lib\multiprocessing\pool.py", line 119, in worker result = (True, func(*args, **kwds)) File "C:\Users\Shangai\AppData\Local\conda\conda\envs\PSAI\lib\site-packages\keras\utils\data_utils.py", line 401, in get_index return _SHARED_SEQUENCES[uid][i] File "C:\Users\Shangai\AppData\Local\conda\conda\envs\PSAI\lib\site-packages\keras\preprocessing\image.py", line 1034, in getitem return self._get_batches_of_transformed_samples(index_array) File "C:\Users\Shangai\AppData\Local\conda\conda\envs\PSAI\lib\site-packages\keras\preprocessing\image.py", line 1442, in _get_batches_of_transformed_samples batch_x[i] = x ValueError: could not broadcast input array from shape (8,8,3) into shape (8,8,2048,3)

上述异常是以下异常的直接原因:

回溯(最近一次呼叫):

File "C:/Users/Shangai/PycharmProjects/PSai/INCEPTION.py", line 234, in validation_steps=steps_test) File "C:\Users\Shangai\AppData\Local\conda\conda\envs\PSAI\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper return func(*args, **kwargs) File "C:\Users\Shangai\AppData\Local\conda\conda\envs\PSAI\lib\site-packages\keras\models.py", line 1315, in fit_generator initial_epoch=initial_epoch) File "C:\Users\Shangai\AppData\Local\conda\conda\envs\PSAI\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper return func(*args, **kwargs) File "C:\Users\Shangai\AppData\Local\conda\conda\envs\PSAI\lib\site-packages\keras\engine\training.py", line 2194, in fit_generator generator_output = next(output_generator) File "C:\Users\Shangai\AppData\Local\conda\conda\envs\PSAI\lib\site-packages\keras\utils\data_utils.py", line 584, in get six.raise_from(StopIteration(e), e) File "", line 2, in raise_from StopIteration: could not broadcast input array from shape (8,8,3) into shape (8,8,2048,3)


Tags: inpylibpackageslocallinesiteconda
1条回答
网友
1楼 · 发布于 2024-10-01 13:44:18

输入张量的大小似乎不正确。 一般来说,只有当两个数组/张量的维数相同时,广播才起作用。在你的情况下,这不是真的:

8 8 3       -> dim = 3
8 8 2048 3  -> dim = 4

您需要展开第一个数组并在正确的位置添加一个大小为1的轴:

^{pr2}$

现在每个轴的大小匹配,对于3轴。维度广播是可能的。 为此,您可以使用newaxis或None符号。在

import numpy as np
A = np.ones((8, 8, 3))
B = np.ones((8, 8, 2048, 3))
C = A + B # Fails
A = A[:, :, np.newaxis, :]
C = A + B # Works

另一种可能是使用函数numpy.expand U dims公司。 对于keras/tensorflow(即tensorflow.newaxistensorflow.expand_dims)。在

相关问题 更多 >