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) 收藏 举报