Tensorflow:如何跨输入共享数据?

时间:2017-09-17 10:11:32

标签: machine-learning tensorflow neural-network

如果这是一个微不足道的问题,或者如果我在错误的一端完全解决这个问题,请道歉。

假设我有一个如下所示的数据集:

[A, [a,b,c,d]], [B, [e,f,g]], [C, [i,j,k,l,m]], ...

大写字母表示大数据块,小写字母表示较小的块。每个大块都与可变数量的小块相关联。

现在,我需要像这样训练我的网络: 每个输入数据点是一对与目标标签相关联的类型(大块,小块)。

(A,a) ----> label 1
(A,b) ----> label 2
(A,c) ----> label 3
(A,d) ----> label 4

(B,e) ----> label 5
(B,f) ----> label 6
...

and so on...

如您所见,大数据块在多个输入中重复使用。

我想知道将初始数据集输入Tensorflow的最佳方法。

创意1: 显然,我可以直接重新排列数据集并将其转换为数据点序列

 (A,a),(A,b),(A,c),(A,d),(B,e),(B,f),...

但这意味着重复大块,并且浪费整体记忆。

想法2:我可以将神经网络划分为两个子网络:

Big chunk ----> Network 1
                     \
                      \
Small chunk -----------\-----> Network 2 ----> Output

这似乎更加优化,我想有一种方法可以计算具有相同大块的多个数据点的计算。 但是如何告诉Tensorflow迭代两个相关的输入数据集?

1 个答案:

答案 0 :(得分:1)

您应该将数据分批并将每批产品送入神经网络。这个概念不仅可以解决您的问题,还可以解决您的问题。

(A,a) ----> label 1
(A,b) ----> label 2
(A,c) ----> label 3
(A,d) ----> label 4

(B,e) ----> label 5
(B,f) ----> label 6

(C,e) ----> label 5
(C,f) ----> label 6

进入

Batch 1: (A,a),(A,b),(B,e),(C,f),...
Batch 2: (A,c),(A,d),(C,e),(B,f)...

应用您的成本函数。选择一个优化器并开始训练您的网络。