教師なし学習の問題のためにデータのミニバッチをトレーニングした人はいますか? feed_dict はラベルを使用し、教師なし設定で使用します。それをどのように克服しますか?損失関数に寄与しない偽のラベルを使用できますか?
基本的に、巨大なデータセットを反復処理してから、カスタム損失関数を最適化したいと考えています。ただし、データから明示的に新しいミニバッチを使用するときに、トレーニング パラメーター (重み) を保持する方法がわかりませんでした。
たとえば、データセット全体は 6000 ポイントで、ミニバッチ サイズは 600 です。現在、ミニバッチごとに、このミニバッチのデータ ポイントに基づいて重みが初期化されるため、新しい独立した重みパラメーターしか使用できませんでした。600 データ ポイントの最初のミニバッチで損失を最適化すると、最適化された重みが得られます。これらの重みをどのように使用して、次の 600 データ ポイントのミニバッチを最適化するのでしょうか。問題は、共有グローバル変数を使用できないことです。
stackoverflow フォーラムで調査しましたが、教師なしデータのミニバッチに関連するものは見つかりませんでした。
'f' は私のデータセット全体で、次元 D の N 点のテキスト データを言います U は次元 D の K クラスターを持つクラスター重心です
変数を次のように定義します。
F = tf.Variable(f.astype(np.float32), name='F')
U = tf.Variable(u.astype(np.float32), name='U')
FMod = tf.reshape(F, [N/K, K, D], name='FMod')
UMod = tf.reshape(U, [1, K, D], name='UMod')
次に、カスタム損失または目的関数を「目的」として定義します
次にオプティマイザを使用します
optimizer = tf.train.AdamOptimizer(learning_rate)
train_W = optimizer.minimize(objective, var_list=[F, U])
最後に、変数を次のように評価します
with tf.Session() as sess:
# Initialize all the variables
sess.run(init_op)
for n in range(noEpochs):
objval1 = sess.run([train_W, objective])
私が行き詰まっているのは、最終的にオプティマイザtrain_Wで使用されるデータ「f」のバッチを反復処理することです。これらのミニバッチに for ループがある場合、これらの反復ごとに新しい変数 train_W を割り当てます。次のミニバッチで使用できるように、この値を渡すにはどうすればよいですか?
この点に関するヘルプやポインタは本当にありがたいです。前もって感謝します!