tensorflow变量初始化
时间: 2023-08-25 11:07:05 浏览: 107
在 TensorFlow 中,可以使用不同的方法来初始化变量。以下是一些常用的变量初始化方法:
1. 随机初始化:
- `tf.random_normal_initializer(mean, stddev)`: 从正态分布中随机采样初始化变量。
- `tf.truncated_normal_initializer(mean, stddev)`: 从截断的正态分布中随机采样初始化变量,截断是指只保留一定范围内的值。
- `tf.random_uniform_initializer(minval, maxval)`: 从均匀分布中随机采样初始化变量。
2. 固定值初始化:
- `tf.constant_initializer(value)`: 使用给定的常数值初始化变量。
3. 预训练模型初始化:
- `tf.keras.initializers.GlorotUniform()`: 根据 Glorot 初始化方法初始化变量,称为 Xavier 初始化。
- `tf.keras.initializers.HeUniform()`: 根据 He 初始化方法初始化变量。
4. 自定义初始化:
- `tf.keras.initializers.VarianceScaling(scale, mode, distribution)`: 根据指定的缩放因子、模式和分布进行自定义初始化。
在使用这些方法初始化变量时,可以将其作为参数传递给 `tf.get_variable()` 或者作为初始化参数传递给 `tf.Variable()`。示例如下:
```python
import tensorflow as tf
# 随机初始化
random_normal_init = tf.random_normal_initializer(mean=0.0, stddev=0.1)
x = tf.get_variable('x', shape=(2, 3), initializer=random_normal_init)
# 固定值初始化
constant_init = tf.constant_initializer(2.0)
y = tf.get_variable('y', shape=(3, 4), initializer=constant_init)
# 预训练模型初始化
glorot_uniform_init = tf.keras.initializers.GlorotUniform()
z = tf.get_variable('z', shape=(4, 5), initializer=glorot_uniform_init)
# 自定义初始化
custom_init = tf.keras.initializers.VarianceScaling(scale=2.0, mode='fan_in', distribution='truncated_normal')
w = tf.get_variable('w', shape=(5, 6), initializer=custom_init)
# 初始化所有变量
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init_op)
# 打印变量的值
print(sess.run(x))
print(sess.run(y))
print(sess.run(z))
print(sess.run(w))
```
在上述示例中,我们使用不同的初始化方法初始化了四个变量 `x`、`y`、`z` 和 `w`,然后使用 `tf.Session()` 运行初始化操作,并打印变量的值。
这些是 TensorFlow 中常用的变量初始化方法,你可以根据自己的需要选择合适的方法来初始化变量。
阅读全文