您的位置:首页 > 其它

tensorflow(1)-初始化

2017-11-07 23:17 183 查看
调用一般可查看:API Documentation

计算图

# g1 = tf.Graph()
# with g1.as_default():
# with tf.Session(graph = g1) as sess:
import tensorflow as tf
g1 = tf.Graph()
with g1.as_default():
v = tf.get_variable("v", [1], initializer = tf.zeros_initializer()) # 设置初始值为0
g2 = tf.Graph()
with g2.as_default():
v = tf.get_variable("v", [1], initializer = tf.ones_initializer())  # 设置初始值为1

with tf.Session(graph = g1) as sess:
tf.global_variables_initializer().run()
with tf.variable_scope("", reuse=True):
print(sess.run(tf.get_variable("v")))
with tf.Session(graph = g2) as sess:
tf.global_variables_initializer().run()
with tf.variable_scope("", reuse=True):
print(sess.run(tf.get_variable("v")))
# 通过a .graph可以查看张量所属的计算图。因为没有特意指定,所以这个计算图应该等于当前默认的计算图。
print(a .graph is tf.get_ default_graph()) # True


张量

# a = tf.constant([1.0, 2.0], name="a")
import tensorflow as tf
a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([2.0, 3.0], name="b")
result = a + b
print(result)
sess = tf.InteractiveSession ()
print(result.eval())
sess.close()
# --------------------------------
Tensor("add:0", shape=(2,), dtype=float32)
[ 3.  5.]


会话

# 使用with statement 来创建会话=========
with tf.Session() as sess:
print(sess.run(result))
# [ 3.  5.]
# 指定默认会话=========================
sess = tf.Session()
with sess.as_default():
print(result.eval())
# 使用tf.InteractiveSession构建会话====
sess = tf.InteractiveSession ()
print(result.eval())
sess.close()
# [ 3.  5.]
# 通过ConfigProto配置会话==============
config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)
sess1 = tf.InteractiveSession(config=config)
sess2 = tf.Session(config=config)


变量

定义变量

w1= tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))         # 需要初始化sess.run(w1.initializer)【init_op = tf.global_variables_initializer()+sess.run(init_op)】


使用placeholder

x = tf.placeholder(tf.float32, shape=(1, 2), name="input")


变量并初始化

v = tf.get_variable("v", [1], initializer = tf.zeros_initializer()) # 设置初始值为0
v = tf.get_variable("v", [1], initializer = tf.ones_initializer())  # 设置初始值为1

# 获取变量并运行
sess.run(tf.get_variable("v"))
# 更新变量值
tf.assign(v1, 5)


变量管理

# 在上下文管理器“foo”中创建变量“v”
with tf.variable_scope("foo"):
v = tf.get_variable("v", [1], initializer=tf.constant_initializer(1.0))
with tf.variable_scope("foo", reuse=True):  # 参数reuse设置为True。这样tf.get variable函数将直接获取已经声明的变量。
v1 = tf.get_variable("v", [1])
# -------------------------------------------------
with tf.variable_scope("foo"):
with tf.variable_scope("bar"):
v3 = tf.get_variable("v", [1])
print v3.name
'''
foo/bar/v:0
'''


变量初始值

w1= tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))     # kernel = tf.get_variable(scope+"w",shape=[kh, kw, n_in, n_out],dtype=tf.float32,initializer=tf.contrib.layers.xavier_initializer_conv2d())
biases = tf.Variable(tf.zeros([3]))           # biases1 = tf.Variable(tf.constant(0.1, shape=[LAYER1_NODE]))
v = tf.get_variable("v",shape=[1],initializer=tf.constant_initializer(1.0))
v = tf.Variable(tf.constant(1.0,shape=[1]),name="v")

with tf.variable_scope('conv1'):
w = tf.get_variable(name='weights',shape=[3,3,3,16],initializer=tf.contrib.layers.xavier_initializer(), trainable=False)
b = tf.get_variable(name='biases',shape=[16],initializer=tf.constant_initializer(0.0), trainable=False)
print('w name:', w.name)  # w name: conv1/weights:0
print('b name:', b.name)  # b name: conv1/biases:0
with tf.name_scope('conv1'):
w = tf.get_variable(name='weights',shape=[3,3,3,16],initializer=tf.contrib.layers.xavier_initializer())
b = tf.get_variable(name='biases',shape=[16],initializer=tf.constant_initializer(0.0))
print('w name:', w.name)  # w name: weights:0
print('b name:', b.name)  # b name: biases:0








初始化

init_op = tf.global_variables_initializer()   # 所有变量初始化
sess.run(w1.initializer)                      # 初始化某个张量,并运行


指定设备

g = tf.Graph()       # tf.Graph.device函数指定运行计算的设备
with g.device('/gpu:0'):
result = a + b


集合

在一个计算图中,可以通过集合(collection)来管理不同类别的资源。比如通过tf.add_to_collection函数可以将资源加入一个或多个集合中,然后通过tf.get_collection获取一个集合里面的所有资源。这里的资源可以是张量、变量或者运行TensorFlow程度所需要的队列资源,等等。



类型

那么两个加数的类型相同就不会报错了。如果不指定类型,TensorFlow会给出默认的类型,不带小数点的数会被默认为int32,带小数点的会默认为float32。

TensorFlow支持14种不同的类型,主要包括了实数(tf.float32, tf.float64),整数(tf.int8, tf.intl6, tf.int32, tf.int64, tf.int8)、布尔型(tf.bool)和复数(tf.complex64,tf.complex 128)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: