因此,我再次尝试使用keras运行此Inception v3微调,我认为数组存在一些问题。我已经看过有关这些主题的其他文章,但是现在我不知道该怎么办。我没有很多经验。因此,我们将不胜感激。
这是完整的代码https://github.com/c3s4grod/PecuScope
这是出现的错误:
回溯(最近通话最近):
文件“ C:\ Users \ Shangai \ AppData \ Local \ conda \ conda \ envs \ PSAI \ lib \ site-packages \ keras \ utils \ data_utils.py”, 578行,进入 输入= self.queue.get(block = True).get()文件“ C:\ Users \ Shangai \ AppData \ Local \ conda \ conda \ envs \ PSAI \ lib \ multiprocessing \ pool.py”, 进入第644行 提高self._value文件“ C:\ Users \ Shangai \ AppData \ Local \ conda \ conda \ envs \ PSAI \ lib \ multiprocessing \ pool.py”, 第119行,在工作程序中 结果=(真,函数(* args,** kwds))文件“ C:\ Users \ Shangai \ AppData \ Local \ conda \ conda \ envs \ PSAI \ lib \ site-packages \ keras \ utils \ data_utils.py” , get_index中的第401行 返回_SHARED_SEQUENCES [uid] [i]文件“ C:\ Users \ Shangai \ AppData \ Local \ conda \ conda \ envs \ PSAI \ lib \ site-packages \ keras \ preprocessing \ image.py”, 第1034行,在 getitem 返回self._get_batches_of_transformed_samples(index_array)文件 “ C:\ Users \ Shangai \ AppData \ Local \ conda \ conda \ envs \ PSAI \ lib \ site-packages \ keras \ preprocessing \ image.py”, 第144行,在_get_batches_of_transformed_samples中 batch_x [i] = x ValueError:无法将输入数组从形状(8,8,3)广播到形状(8,8,2048,3)
上述异常是以下异常的直接原因:
回溯(最近通话最近):
文件“ C:/Users/Shangai/PycharmProjects/PSai/INCEPTION.py”,第234行,在 validate_steps = steps_test)文件“ C:\ Users \ Shangai \ AppData \ Local \ conda \ conda \ envs \ PSAI \ lib \ site-packages \ keras \ legacy \ interfaces.py”, 第91行,在包装器中 返回func(* args,** kwargs)文件“ C:\ Users \ Shangai \ AppData \ Local \ conda \ conda \ envs \ PSAI \ lib \ site-packages \ keras \ models.py”, 在fit_generator中的第1315行 initial_epoch = initial_epoch)文件“ C:\ Users \ Shangai \ AppData \ Local \ conda \ conda \ envs \ PSAI \ lib \ site-packages \ keras \ legacy \ interfaces.py”, 第91行,在包装器中 返回func(* args,** kwargs)文件“ C:\ Users \ Shangai \ AppData \ Local \ conda \ conda \ envs \ PSAI \ lib \ site-packages \ keras \ engine \ training.py”, 第2194行,在fit_generator中 generator_output = next(output_generator)文件“ C:\ Users \ Shangai \ AppData \ Local \ conda \ conda \ envs \ PSAI \ lib \ site-packages \ keras \ utils \ data_utils.py”, 584行,进入 six.raise_from(StopIteration(e),e)在stop_eration中,文件“”,第2行,在stop_eration中:无法广播来自shape的输入数组 (8,8,3)变成形状(8,8,2048,3)
答案 0 :(得分:0)
输入张量似乎不正确。 通常,仅当两个数组/张量具有相同的维数时,广播才有效。在您的情况下,这是不正确的:
8 8 3 -> dim = 3
8 8 2048 3 -> dim = 4
您需要扩展第一个数组,并在正确的位置添加尺寸为1的轴:
8 8 1 3
8 8 2048 3
现在每个轴的尺寸都匹配,并且可以进行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, :]
# A = A[:, :, None, :] # Alternative
C = A + B # Works
另一种可能性是使用函数 numpy.expand_dims 。 相同的符号可用于 keras / tensorflow 中的张量(即 tensorflow.newaxis , tensorflow.expand_dims )。