gpt4 book ai didi

python - tensorflow ,凯拉斯 : How to create a trainable variable that only update in specific positions?

转载 作者:太空狗 更新时间:2023-10-30 00:12:43 25 4
gpt4 key购买 nike

例如,y=Ax

其中 A 是一个对角矩阵,其可训练权重 (w1, w2, w3) 在对角线上。

A = [w1 ... ...
... w2 ...
... ... w3]

如何在 Tensorflow 或 Keras 中创建这样的可训练 A

如果我尝试 A = tf.Variable(np.eye(3)),可训练权重的总数将为 3*3=9,而不是 3。因为我 想要更新 (w1,w2,w3) 这 3 个权重。

一个技巧可能是使用 A = tf.Variable([1, 1, 1]) * np.eye(3),以便将 3 个可训练权重映射到A

我的问题是:

  1. 这个技巧对我有用吗?梯度会被正确计算吗?

  2. 如果A的情况比较复杂怎么办?例如。如果我想创建:

More complex Example

其中 w1, w2, ..., w6 是要更新的权重。

最佳答案

您有两种不同的工具来解决这个问题。

  1. 您可以创建所需的变量并将它们重新排列成所需的形式。
  2. 您可以创建比需要更多的变量,然后丢弃一些变量以达到所需的形式。

这两种方法并不排斥,您可以混合使用#1 和#2 类型的连续步骤。

例如,对于您的第一个示例(对角矩阵),我们可以使用方法 #1。

w = tf.Variable(tf.zeros(n))
A = tf.diag(w) # creates a diagonal matrix with elements of w

对于您的第二个更复杂的示例,我们可以使用方法 #2。

A = tf.Variable(tf.zeros((n, n)))
A = tf.matrix_band_part(A, 1, 1) # keep only the central band of width 3
A = tf.matrix_set_diag(A, tf.ones(n)) # set diagonal to 1

关于python - tensorflow ,凯拉斯 : How to create a trainable variable that only update in specific positions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51745580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com