Tensorflow学习笔记3:变量创建,初始化

TensorFlow变量简介:创建,初始化

本教程介绍如何定义和初始化TensorFlow变量。

介绍

定义variables是必要的,因为它们包含参数。如果没有参数,则无法执行培训,更新,保存,恢复和任何其他操作。TensorFlow中定义的变量只是具有特定形状和类型的张量。必须使用值初始化张量以使其有效。在本教程中,我们将解释如何define和initialize变量。该 源代码 可在专用的GitHub库。

创建变量

对于变量生成,将使用tf.Variable()类。当我们定义一个变量时,我们基本上将a tensor和它传递value 给图形。基本上,会发生以下情况:

  • 一个variable,其保持值张量将被传递给图。
  • 通过使用tf.assign,初始化器设置初始变量值。

一些任意变量可以定义如下:

import tensorflow as tf
from tensorflow.python.framework import ops

#######################################
######## Defining Variables ###########
#######################################

# Create three variables with some default values.
weights = tf.Variable(tf.random_normal([2, 3], stddev=0.1),
                      name="weights")
biases = tf.Variable(tf.zeros([3]), name="biases")
custom_variable = tf.Variable(tf.zeros([3]), name="custom")

# Get all the variables' tensors and store them in a list.
all_variables_list = ops.get_collection(ops.GraphKeys.GLOBAL_VARIABLES)

在上面的脚本中,ops.get_collection从定义的图中获取所有已定义变量的列表。“name”键,为图表上的每个变量定义一个特定名称

初始化

Initializers必须在模型中的所有其他操作之前运行变量。作为类比,我们可以考虑汽车的起动器。变量也可以restored来自保存的模型,例如检查点文件,而不是运行初始化 程序。变量可以全局,特别是从其他变量初始化。我们将在后续章节中研究不同的选择。

初始化特定变量

通过使用tf.variables_initializer,我们可以显式命令TensorFlow仅初始化某个变量。脚本如下

# "variable_list_custom" is the list of variables that we want to initialize.
variable_list_custom = [weights, custom_variable]

# The initializer
init_custom_op = tf.variables_initializer(var_list=variable_list_custom)

注意到自定义初始化并不意味着我们不需要初始化其他变量!必须从保存的变量初始化或恢复在图上对它们执行某些操作的所有变量。这只允许我们实现如何手动初始化特定变量。

全局变量初始化

可以使用tf.global_variables_initializer()一次初始化所有变量。必须在构建模型后运行此操作。脚本如下:

# Method-1
# Add an op to initialize the variables.
init_all_op = tf.global_variables_initializer()

# Method-2
init_all_op = tf.variables_initializer(var_list=all_variables_list)

上述两种方法都是相同的。 我们只提供第二个来证明当你将所有变量作为输入参数产生时,tf.global_variables_initializer()只是tf.variables_initializer。

使用其他现有变量初始化变量

通过使用initialized_value()获取值,可以使用其他现有变量的初始值初始化新变量。

使用预定义变量的值进行初始化

# Create another variable with the same value as 'weights'.
WeightsNew = tf.Variable(weights.initialized_value(), name="WeightsNew")

# Now, the variable must be initialized.
init_WeightsNew_op = tf.variables_initializer(var_list=[WeightsNew])

从上面的脚本可以看出,WeightsNew变量是使用weights预定义值的值初始化的。

运行会话

到目前为止我们所做的只是定义初始化器的操作并将它们放在图表上。为了真正初始化变量,必须在会话中运行已定义的初始化程序的操作。脚本如下:

运行会话以进行初始化

with tf.Session() as sess:
    # Run the initializer operation.
    sess.run(init_all_op)
    sess.run(init_custom_op)
    sess.run(init_WeightsNew_op)

每个初始化程序都已使用会话分开运行。

摘要
在本教程中,我们介绍了变量创建和初始化。已经调查了全局,自定义和继承的变量初始化。在以后的文章中,我们将研究如何保存和恢复变量。恢复变量消除了初始化的必要性。

猜你喜欢

转载自blog.csdn.net/qq_38446366/article/details/91951482