【发布时间】:2023-04-07 16:48:01
【问题描述】:
我正在为 keras 中的序列到序列问题编写 VAE。解码器是一个自回归模型,所以我有两个不同的输入,一个用于编码器,一个用于解码器(移位 1,但这不是问题)。 我还想做数据扩充,所以我决定使用 fit_generator() 方法,但是在返回两个输入时我遇到了一些问题。
我试图返回一个包含两个输入向量的列表,像这样
class DataGenerator(Sequence):
def __init__(....
def __getitem__(self, index):
data = create_data()
return [data, data]
或者像这样的字典
return {"encoder_input_name" : "data, decoder_input_name" : data }
其中 data 是一个形状为 numpy 的张量(batch_size、max_sequence_len、input_dimention)。
我不能只使用相同的输入层,因为稍后两个输入会有点不同,正如我所说的解码器输入会因第一个元素不同以及其他原因移动一个。
当我返回列表 [data, data] 或出现此错误时:
ValueError: Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 2 array(s), but instead got the following list of 1 arrays
当我返回字典时出现此错误:
batch_size = x.shape[0]
AttributeError: 'str' object has no attribute 'shape'
我该如何解决这个问题?
非常感谢!
编辑
我将__getitem__ 的输出更改为
[inpuut_1, input_2], [] 并且成功了。
【问题讨论】:
标签: python tensorflow keras generator autoregressive-models