2017-09-17 16 views
1

これが些細な質問である場合、または私が間違ったところでこの問題を完全に解決している場合は、お詫び申し上げます。Tensorflow:入力間でデータを共有する方法は?

は、私はこのようになりますデータセットを持って言う:

[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:私はこのような2つのサブネットワークにニューラルネットワークを分割できます。これは、より最適化されたように見える

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

、と私はのための計算を考慮するための方法が存在することになると思います同じ大きなチャンクを持つ複数のデータポイント。 しかし、Tensorflowに2つの依存入力データセットを反復処理するように指示する方法はありますか?

答えて

1

データをバッチにして、すべてのバッチをニューラルネットワークにフィードする必要があります。このコンセプトはあなたの問題を解決するだけでなく、問題の規模を拡大します。

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

(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 

あなたのコスト関数を適用します。オプティマイザを選択し、ネットワークのトレーニングを開始してください。

+0

ありがとう、それは良いアドバイスです。しかし、私は最初のアイデアと同じ問題を抱えています。バッチを作成するときには、大きなチャンクをメモリに複製する必要があります。これを回避する方法はありませんか? – Askannz

+0

Tensorflowには、バッチを作成し、それらを複製しない方法が組み込まれています。テンソルフローを用いたMNIST分類問題をチェックアウトする。 –

関連する問題