为无人监督学习培训小批量数据(无标签)

时间:2017-09-23 23:08:37

标签: tensorflow unsupervised-learning loss-function mini-batch sess.run

是否有人为无人监督的学习问题培训了一小批数据? 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])

我遇到的问题是迭代我的数据'f'批次,最终用于优化器train_W。如果我在这些迷你批次上有一个for循环,我会为每个迭代分配一个新的变量train_W。如何传递此值以便可以在下一个小批量中使用?

在这方面的任何帮助或指示将非常感谢。提前谢谢!

0 个答案:

没有答案