如何在keras

时间:2018-04-14 13:42:23

标签: keras keras-2

SPP net用于可变大小的输入图像。 here中keras的SPP Net实现使用两个model.fit来处理两种尺寸的图像。我有278个不同大小的图像,所以在这种情况下如何使用model.fit?以及两个model.fit使用后如何计算效率和其他性能参数?我引用了一些来自spp paper的行,其中作者写了

对于单个网络接受可变输入大小,我们通过共享所有参数的多个网络对其进行近似,而这些网络中的每一个都使用固定输入大小进行训练。 在每个时代,我们使用给定的输入大小训练网络,并切换到下一个纪元的另一个输入大小。实验表明,这种多尺寸训练与传统的单一训练融合,可以提高测试的准确性。

我们是否应该使用尽可能多的时代。可变尺寸图像?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用生成器(请参见stanford.edu)。


如果所有图像的大小均不同,则批处理大小应为1。注意X和y形状。

class WordImageGeneratorSPP(object):
    def __init__(self, shuffle=True):
        self.shuffle = shuffle

    def generate(self, items):
        while 1:
            if self.shuffle:
                random.shuffle(items)
            for item in items:
                X = item[0]
                y = item[1]
                yield X, y

train_gen = WordImageGeneratorSPP().generate(train_data)
model.fit_generator(generator=train_gen, ...)

您可以绘制生成器的输出,但也应注意X和y形状。

import matplotlib.pyplot as plt

train_gen = WordImageGeneratorSPP().generate(train_data)

for X, y in train_gen:
    plt.imshow(X)
    plt.title(y)
    plt.show()