Tensorflow中的变量
TensorFlow是一个用于高效数值计算的Python库。它是一个基础库,可用于开发机器学习和深度学习模型。Tensorflow是一个高级库。变量是一种状态或数值,可以通过对其进行操作来修改。在TensorFlow中,变量是使用Variable()构造函数创建的。
Variable()构造函数希望变量有一个初始值,它可以是任何种类或形状的Tensor。变量的类型和形式由其初始值定义。形状和变量一旦被创建就会被固定下来。让我们看一下如何在TensorFlow中创建变量的几个例子。
语法:
参数:
- initial_value : 默认为 None。变量的初始值是一个张量,或者一个可以转换为张量的Python对象。
- trainable : 默认为无。如果为真,GradientTapes将关注这个变量的使用。
- validate_shape : 默认为True。如果是False,允许变量以未知的形状值初始化。如果是True,初始值的形状必须是已知的,这是默认的。
- name :默认为None。变量的可选名称。默认为’Variable’,并自动唯一化。
- variable_def:默认为无。
- dtype:默认为无。如果设置,initial_value将被转换为给定的类型。如果没有,数据类型将被保留(如果initial_value是一个Tensor),或者convert_to_tensor将决定。
- shape:默认为无。如果无,将使用initial_value的形状。如果指定了任何形状,变量将被分配到该特定形状。
创建一个变量
tf.Variable()构造函数用于在TensorFlow中创建一个变量。
输出:
<tf.Variable ‘Variable:0’ shape=(2,) dtype=int32, numpy=array([3, 4], dtype=int32)>
TensorFlow变量的尺寸、大小、形状和d类型
输出:
分配或修改 变量中的元素。
我们使用assign()方法来修改这个变量。这更像是索引,然后使用assign()方法。还有更多的方法来分配或修改变量,如Variable.assign_add()和Variable.assign_sub())。
示例 1:
assign():它用于更新或添加一个新的值。
语法: assign(value, use_locking=False, name=None, read_value=True)
参数:
- value:这个变量的新值。
- use_locking:如果 “true”,则在赋值过程中进行锁定。
输出:
<tf.Variable ‘Variable:0’ shape=(2,) dtype=int32, numpy=array([3, 5], dtype=int32)>
示例 2:
语法: assign_add(delta, use_locking=False, name=None, read_value=True)
参数:
- delta:要添加到变量(Tensor)中的值。
- use_locking: 在操作过程中,如果为真,则利用锁定。
- name:操作的名称。
- read_value: 如果是True,任何评估为变量的修改值的东西将被返回;如果是False,赋值操作将被返回。
输出:
<tf.Variable ‘Variable:0’ shape=(2,) dtype=int32, numpy=array([4, 5], dtype=int32)>
示例 3:
语法: assign_sub( delta, use_locking=False, name=None, read_value=True)
参数:
delta:要从变量中减去的值
use_locking: 在操作过程中,如果为真,则利用锁定。
name:操作的名称。
read_value: 如果是True,任何评估为变量的修改值的东西将被返回;如果是False,赋值操作将被返回。
输出:
<tf.Variable ‘Variable:0’ shape=(2,) dtype=int32, numpy=array([2, 3], dtype=int32)>
改变变量的形状。
tf.reshape()方法用于改变变量的形状。必须传递变量和形状。
输出:
改变张量的数据类型。
如果我们想让变量有一个特定的数据类型,我们必须在创建变量时指定dtype。在这个例子中,我们指定dtype为float。
输出:
<tf.Variable ‘Variable:0’ shape=(1, 4) dtype=float32, numpy=array([[1., 2., 3., 4.]], dtype=float32)>
用变量进行操作
我们可以用TensorFlow变量进行加法、减法、乘法、除法以及更多的操作。
输出:
Addition of tensors tf.Tensor([ 8 10], shape=(2,), dtype=int32)
Subtraction of tensors tf.Tensor([-2 -2], shape=(2,), dtype=int32)
Multiplication of tensors tf.Tensor([15 24], shape=(2,), dtype=int32)
division of tensors tf.Tensor([0.6 0.66666667], shape=(2,), dtype=float64)
Broadcasting
当我们试图用几个Variable对象执行组合操作时,就像用Tensor对象一样,较小的变量可以像NumPy数组一样瞬间延伸出去以适应大的变量。当你试图将一个标量变量与一个变量相乘时,标量会被拉长,以乘上变量的每个元素。
输出:
变量的硬件选择
我们可以利用它来查看什么类型的设备(即处理器)被用来处理我们的变量。.设备属性的使用。
输出:
The type of hardware variable used : /job:localhost/replica:0/task:0/device:CPU:0