美文网首页深度学习
TensorFlow 基础(3)

TensorFlow 基础(3)

作者: zidea | 来源:发表于2019-08-19 21:10 被阅读11次

张量数组和形状

c = tf.constant([[1,2,3],[4,5,6]])
print("python list {}".format(c.get_shape()))
python list (2, 3)

首先我们介绍 TensorFlow 中两个重要对象变量占位符

变量

有关过程就是不断地调整给定模型的参数,为此 TensorFlow 将变量定义为对象,这与我们熟悉的变量有所不同。在 TensorFlow 中变量是承载和更新参数(如权重)的对象。
使用变量分为两个阶段使用tf.Variable()声明(创建)变量,然后还需要对变量进行初始化,初始化过程是为变量分配变量并为其赋值。

import tensorflow as tf
init_val = tf.random_normal((1, 3), 0, 1)

将一个一维数组,数组元素是在 -1 到 1 间随机变量

var = tf.Variable(init_val, name="var")
print("pre run \n {}".format(var))

使用 Variable 来定义变量,这时只是变量将要被给上的初始值,这时候并没有给变量分配内存和初始化初值,直到调用 tf.global_variables_initializer() 方法才为变量分配变量和赋值。

init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    post_var = sess.run(var)
print("\n post run: \n{}".format(post_var))
pre run
 <tf.Variable 'var:0' shape=(1, 3) dtype=float32_ref>
 post run:
[[-0.7185773 -2.401612   0.666178 ]]
d = tf.constant(np.array(
    [
        [[1,3,3],[2,3,3]],
        [[2,6,7],[2,3,2]]
    ]
))

print("pyton Numpy array {}".format(d.get_shape()))

占位符

所谓占位符在运算中用临时值来填充一些以后被实际数据代替位置,当

a = 3
b = 2
x = tf.placeholder(tf.float32,shape=(a,b))
y = tf.add(x,x)
data = np.random.rand(a,b)
sess = tf.Session()
print(sess.run(y,feed_dict={x:data}))

shape 作为占位符的可选参数定义占位符的形状,默认值是None,当我们定义一个占位符时,就必须给输入值,否则将抛出异常。

[[1.201108   0.45492122]
 [0.34809026 0.6927605 ]
 [1.9980657  1.4801023 ]]

举个栗子

x_data = np.random.randn(5,10)
w_data = np.random.randn(10,1)
with tf.Graph().as_default():
    x = tf.placeholder(tf.float32,shape=(5,10))
    w = tf.placeholder(tf.float32,shape=(10,1))
    b = tf.fill((5,1),-1.)
    xw = tf.matmul(x,w)
    
    xwb = xw + b
    s = tf.reduce_max(xwb)
    with tf.Session() as sess:
        outs = sess.run(s,feed_dict={x:x_data,w:w_data})
print("outs = {}".format(outs))
outs = 2.72071838379

相关文章

网友评论

    本文标题:TensorFlow 基础(3)

    本文链接:https://www.haomeiwen.com/subject/svdvlctx.html