我正在keras中创建一个包含两组输入数据的深度学习模型:input1
和input2
。你知道吗
input1
有N
个样本,input2
有M
个样本。这两组输入在连接在一起之前将经过DNN的不同层。原始输出数据有M*N
个样本。你知道吗
我想要的是每一对输入输出都是:
([input1[i], input[j]], output[i,j])
我知道在keras model.fit
中,我必须插入相同样本号的[input1, input2]
。但是,由于我的两个输入都非常大,当我试图复制input1
M次或input2
N次以使它们的样本数相等时,会导致内存错误。你知道吗
我不知道keras或tensorflow中是否有一种方法可以教模型适应我描述的样本对,但不需要重复输入。你知道吗
问得好。对于此类问题,通常使用的是数据生成器,即在每批训练期间创建数据的生成器对象,从而节省内存空间。你知道吗
以下是基于虚拟数据的数据生成器的最小工作示例:
输出为:
如您所见,生成器所做的只是保存一个表
[ij,[i,j]]
的列表。形式为[x_data_1,x_data_2],y_data
的模型的输入数据仅在调用__getitem__()
时呈现为一批数据。你知道吗可以将数据生成器与
model.fit_generator()
方法一起使用,而不是像通常那样使用model.fit()
,如下所示为示例模型:输出为:
在每个历元期间,
.fit_generator()
-方法自动调用__getitem__(self, batch_index)
以获取0
和__len__(self) - 1
之间的batch_index
,从而使用整个数据集。在每个历元之后,调用on_epoch_end(self)
,并重新排列数据。你知道吗相关问题 更多 >
编程相关推荐