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

Machine learning Tensorflow:如何跨输入共享数据?,machine-learning,tensorflow,neural-network,Machine Learning,Tensorflow,Neural Network,如果这是一个微不足道的问题,或者如果我完全错误地对待这个问题,我会道歉 假设我有一个如下所示的数据集: [A, [a,b,c,d]], [B, [e,f,g]], [C, [i,j,k,l,m]], ... Big chunk ----> Network 1 \ \ Small chunk -----------\-----> Network 2 ----> Output 大写字母表示大数

如果这是一个微不足道的问题,或者如果我完全错误地对待这个问题,我会道歉

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

[A, [a,b,c,d]], [B, [e,f,g]], [C, [i,j,k,l,m]], ...
Big chunk ----> Network 1
                     \
                      \
Small chunk -----------\-----> Network 2 ----> Output
大写字母表示大数据块,小写字母表示小数据块。每个大数据块都与数量可变的小数据块相关联

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

(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:我可以将神经网络分为两个子网络,如下所示:

[A, [a,b,c,d]], [B, [e,f,g]], [C, [i,j,k,l,m]], ...
Big chunk ----> Network 1
                     \
                      \
Small chunk -----------\-----> Network 2 ----> Output
这看起来更优化了,我想有一种方法可以对具有相同大数据块的多个数据点进行因子计算。
但是如何告诉Tensorflow迭代两个相关的输入数据集呢?

您应该将数据分成若干批,并将每一批数据输入到您的神经网络中。这个概念不仅解决了你的问题,还扩展了你的问题

(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
进入


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

谢谢,这是一个很好的建议。但与我的第一个想法相比,我遇到了同样的问题:在创建批处理时,我仍然需要在内存中复制大块。没有办法解决这个问题吗?Tensorflow有一个内置功能,可以创建批,而不是复制批。使用tensorflow检查MNIST分类问题。