tensorFlow四:张量、变量的区别及代码案例

tensor数据 - -  张量:

变量:

这里的变量,和编程语言中变量不一样。这里的变量,指的是在内存中存放的是一系列张量。

 

 创建变量示例:

import tensorflow as tf
# 1.定义一个变量
a = tf.Variable(initial_value=3.0, dtype=tf.float32)
print(type(a))  # <class "tensorflow.python.ops.variables.Variable">
# 可见这里的变量,是一个Variable实例对象

# 定义一个张量
# b = tf.constant(value=2, dtype=tf.int32)
b = tf.constant(value=2, dtype=tf.float32)
print(type(b))  # <class "tensorflow.python.framework.ops.Tensor">

# 执行变量初始化,返回一个(全局的)(初始化的)节点
# init_op = tf.initialize_all_variables()
init_op = tf.global_variables_initializer()

# 定义一个操作
c = tf.add(a, b)

# 图的执行阶段
session_config = tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)
with tf.Session(config=session_config) as sess:
    # sess.run(init_op)
    # 使用init_op.run()代替session.run(),要注意会话点
    # init_op.run()
    
    print("result:\n{}".format(sess.run(c)))
    # 抛出异常,因为a, b的数据类型不一样
    # 将a, b的数据类型dtype修改成完全一样,再运行,抛出异常:变量a没有初始化
    # 虽然在定义时变量a,给了初始化的变量值,但只是定义,未执行,
    # 真正初始化,包括:1.定义时传入初始化值,2.使用tf.global_variables_initializer()构建全局的初始化节点, 3.使用session.run()执行初始化节点
    # 使用session.run(init_op)或者使用init_op.run()代替。

 

 

import tensorflow as tf
import os
# 只显示warning,Error
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '2'

# 定义变量
w1 = tf.Variable(initial_value=tf.random_normal(
    shape=[10, 2], stddev=0.5, seed=10, dtype=tf.float32
))
# 定义张量
a = tf.constant(value=2, dtype=tf.float32)
# w2 = tf.Variable(initial_value=w1 * a, name="w2")
# 这里最好不要直接使用w1,而是使用初始化后的值: w1.initialized_value()
w2 = tf.Variable(initial_value=w1.initialized_value() * a, name='w2')

# 构建初始化变量
init_op = tf.global_variables_initializer()

with tf.Session() as sess:
    # 执行初始化变量
    sess.run(init_op)
    result = sess.run([w1, w2])
    print("result: {}\n{}".format(result[0], result[1]))

 

posted on 2019-01-31 21:42  myworldworld  阅读(627)  评论(0)    收藏  举报

导航