如何将每个历元的张量值保留在一层中,并将其传递给张量流中的下一个历元

问题描述 投票:0回答:1

我有一个一般性问题。

我正在开发新的层以合并到自动编码器中。更具体地说,该层类似于KCompetitive上的here类。我想要的是我需要将这一层的输出保存在一个变量中,我们将其称为previous_mat_values,然后在下一个时期将其传递到同一层。

换句话说,我希望能够将这一层epoch 1的输出保存在一个变量中,然后在epoch 2中,再次使用相同的矩阵。

所以问题出现了,在第一个时期该矩阵的值是多少,因为它还没有该层的输出。我们可以使用权重矩阵的相同形状初始化一个数组,但是使用0的值,我会这样做。

previous_mat_values = tf.zeros_like(weight_tensor)

因此步骤如下:

  1. 在第一个时期,previous_mat_valuesweight_mat将传递到图层

    1.a在该层函数的末尾,我们将其最终值称为modified_weight_mat将保存到previous_mat_values

    previous_mat_values = modified_weight_mat

  2. 在第二个时期,previous_mat_valuesweight_mat将传递到图层,但是,previous_mat_values的值保存在第一个时期。

通过weight_mat并进行与此相关的操作,我没有任何问题。这里唯一的问题是我们如何保存每个时期的previous_mat_values值并将其传递给下一个时期。

我曾想在class of that layer中创建一个全局张量变量,并将其初始化为零,但我认为将前一个时期的值保留到第二个时期不会有帮助。

您知道我该如何实施吗?

如果我的解释不清楚,请让我知道。

python tensorflow neural-network keras-layer
1个回答
0
投票

您可以按预期使用变量在历元之间保留:

previous_mat_values = tf.Variable(tf.zeros_like(weight_tensor), trainable=False)
assign_op = previous_mat_values.assign(modified_weight_mat)

然后确保对sess.run的调用中包括了assign_op:

out, _ = sess.run([output, assign_op])
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.