自定义数据生成器如何返回组成的标签

时间:2019-11-04 01:39:07

标签: tensorflow keras

我正在实现tf.keras.utils.Sequence的数据生成器子类。其 getitem 返回一个包含数据的组合标签,例如

def __getitem__(self, idx):
    ......
    return image_batch, [label_batch_part1, label_batch_part2]

label_batch_part1和label_batch_part2具有不同的形状。 我将生成器实例(train_gen)传递给了tf.keras的model.fit_generator,例如

model.compile(optimizer = Adam(lr = 1e-4), loss = my_cost_func, metrics = ['accuracy'])
model.fit_generator(train_gen,
                    steps_per_epoch=50,
                    epochs=100,
                    callbacks=[model_checkpoint])

我还有一个自定义丢失功能,例如

def my_cost_func(y_true, y_pred, **kwargs):
    y_true_part1, y_true_part2 = y_true[0], y_true[1]
    cost = y_true_part1 - op(y_true_part2, y_pred)
    ... ...

我希望y_true_part1是label_batch_part1,而y_true_part2是label_batch_part2。

到目前为止,我遇到了运行时错误:

  

文件“ /home/chris/hdd2nd/dev/mlenv/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_utils.py”,行346,在standardize_input_data中   ValueError:检查模型目标时出错:传递给模型的Numpy数组列表不是模型预期的大小。预计会看到1个数组,但获得了以下2个数组的列表

我想知道这样做的正确方法是什么?

谢谢

0 个答案:

没有答案