在tensorflow中冻结权重矩阵中的特定值

在tensorflow中冻结权重矩阵中的特定值,tensorflow,Tensorflow,假设我有一个权重矩阵,看起来像[[a,b],[c,d],那么在Tensorflow中是否可以将b和c的值固定为零,这样它们在优化过程中不会改变?有三种方法可以做到这一点,您可以 把你的权重矩阵分解成多个变量,只让其中一些变量可以训练 将常数元素的梯度计算设为零 破解gradient应用程序以重置常量元素的值 有三种方法可以做到这一点,你可以 把你的权重矩阵分解成多个变量,只让其中一些变量可以训练 将常数元素的梯度计算设为零 破解gradient应用程序以重置常量元素的值 一些示例代码: A =

假设我有一个权重矩阵,看起来像
[[a,b],[c,d]
,那么在Tensorflow中是否可以将
b
c
的值固定为零,这样它们在优化过程中不会改变?

有三种方法可以做到这一点,您可以

  • 把你的权重矩阵分解成多个变量,只让其中一些变量可以训练
  • 将常数元素的梯度计算设为零
  • 破解gradient应用程序以重置常量元素的值
    有三种方法可以做到这一点,你可以

  • 把你的权重矩阵分解成多个变量,只让其中一些变量可以训练
  • 将常数元素的梯度计算设为零
  • 破解gradient应用程序以重置常量元素的值 一些示例代码:

    A = tf.Variable([[1., 0.], [3., 0.]])
    A1 = A[:,0:1] # just some slicing of your variable
    A2 = A[:,1:2]
    A2_stop = tf.stop_gradient(tf.identity(A2)) 
    A = tf.concat((A1, A2_stop), axis=1)
    
    实际上,
    tf.identity
    需要在A2之前停止渐变。

    一些示例代码:

    A = tf.Variable([[1., 0.], [3., 0.]])
    A1 = A[:,0:1] # just some slicing of your variable
    A2 = A[:,1:2]
    A2_stop = tf.stop_gradient(tf.identity(A2)) 
    A = tf.concat((A1, A2_stop), axis=1)
    

    实际上,
    tf.identity
    需要在A2之前停止梯度。

    那么你想要一个张量,其中一些值是变量,可训练的,其他值是常量?那么你想要一个张量,其中一些值是变量,可训练的,其他值是常量?