tf.assign()、tf.assign_add()、tf.assign_sub()函数介绍和示例

tf.assign()、tf.assign_add()、tf.assign_sub()函数介绍和示例

1. tf.assign(ref, value, validate_shape=True, use_locking=None, name=None)

释义:将 value 赋值给 ref,即 ref = value

  • ref,变量
  • value,值
  • validate_shape,默认 True,值 shape 需要与变量 shape 一致;若设为 False,则值 shape 覆盖变量 shape
  • use_locking,默认 False,若为 True,则受锁保护
  • name,名称

示例

import tensorflow as tf
x = tf.Variable(1., dtype=tf.float32)
y = tf.constant(2., dtype=tf.float32)
z = tf.assign(x, y)                              # 单个值赋值
X = tf.Variable(tf.ones([2, 3]), dtype=tf.float32)
Y = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float32)
Z = tf.assign(X, Y)                              # 矩阵赋值(变量与值 shape 相同)
X_ = tf.Variable(1.0, dtype=tf.float32)
Y_ = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float32)
Z_ = tf.assign(X_, Y_, validate_shape=False)    # 矩阵赋值(变量与值 shape 不同)
init = tf.initialize_all_variables()
with tf.Session() as sess:
    sess.run(init)
    print('赋值操作前 x:', sess.run(x))
    print('赋值操作 z:', sess.run(z))
    print('赋值操作后 x:', sess.run(x))
    print('='*30)
    print('赋值操作前 X:\n', sess.run(X))
    print('赋值操作 Z:\n', sess.run(Z))
    print('赋值操作后 X:\n', sess.run(X))
    print('='*30)
    print('赋值操作前 X_:\n', sess.run(X_))
    print('赋值操作 Z_:\n', sess.run(Z_))
    print('赋值操作后 X_:\n', sess.run(X_))
赋值操作前 x: 1.0
赋值操作 z: 2.0
赋值操作后 x: 2.0
==============================
赋值操作前 X:
 [[1. 1. 1.]
 [1. 1. 1.]]
赋值操作 Z:
 [[1. 2. 3.]
 [4. 5. 6.]]
赋值操作后 X:
 [[1. 2. 3.]
 [4. 5. 6.]]
==============================
赋值操作前 X_:
 1.0
赋值操作 Z_:
 [[1. 2. 3.]
 [4. 5. 6.]]
赋值操作后 X_:
 [[1. 2. 3.]
 [4. 5. 6.]]
2. tf.assign_add(ref, value, use_locking=None, name=None)

释义:将值 value 加到变量 ref 上, 即 ref = ref + value

  • ref,变量
  • value,值
  • use_locking,默认 False, 若为 True,则受锁保护
  • name,名称

示例

import tensorflow as tf
x = tf.Variable(1., dtype=tf.float32)
y = tf.constant(2., dtype=tf.float32)
z = tf.assign_add(x, y)                      # 单个值相加
X = tf.Variable(tf.ones([2, 3]), dtype=tf.float32)
Y = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float32)
Z = tf.assign_add(X, Y)                      # 矩阵对应位置相加,将值赋给 X
init = tf.initialize_all_variables()
with tf.Session() as sess:
    sess.run(init)
    print('加操作前 x:', sess.run(x))
    print('加操作 z:', sess.run(z))
    print('加操作后 x:', sess.run(x))
    print('='*30)
    print('加操作前 X:\n', sess.run(X))
    print('加操作 Z:\n', sess.run(Z))
    print('加操作后 X:\n', sess.run(X))
加操作前 x: 1.0
加操作 z: 3.0
加操作后 x: 3.0
==============================
加操作前 X:
 [[1. 1. 1.]
 [1. 1. 1.]]
加操作 Z:
 [[2. 3. 4.]
 [5. 6. 7.]]
加操作后 X:
 [[2. 3. 4.]
 [5. 6. 7.]]
3. tf.assign_sub(ref, value, use_locking=None, name=None)

释义:变量 ref 减去 value值,即 ref = ref - value

  • ref,变量
  • value,值
  • use_locking,默认 False, 若为 True,则受锁保护
  • name,名称

示例

import tensorflow as tf
x = tf.Variable(1., dtype=tf.float32)
y = tf.constant(2., dtype=tf.float32)
z = tf.assign_sub(x, y)                      # 单个值相减
X = tf.Variable(tf.ones([2, 3]), dtype=tf.float32)
Y = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float32)
Z = tf.assign_sub(X, Y)                      # 矩阵对应位置相减,将值赋给 X
init = tf.initialize_all_variables()
with tf.Session() as sess:
    sess.run(init)
    print('减操作前 x:', sess.run(x))
    print('减操作 z:', sess.run(z))
    print('减操作后 x:', sess.run(x))
    print('='*30)
    print('减操作前 X:\n', sess.run(X))
    print('减操作 Z:\n', sess.run(Z))
    print('减操作后 X:\n', sess.run(X))
减操作前 x: 1.0
减操作 z: -1.0
减操作后 x: -1.0
==============================
减操作前 X:
 [[1. 1. 1.]
 [1. 1. 1.]]
减操作 Z:
 [[ 0. -1. -2.]
 [-3. -4. -5.]]
减操作后 X:
 [[ 0. -1. -2.]
 [-3. -4. -5.]]
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值