TensorFlow入门第二课---数据类型

2019-04-29  本文已影响0人  萌木盖

这里安装的问题我就不讲了,百度一大堆没必要我来说!
我是在jupyter上运行的,不会用就百度吧。其实就是网页版灵活的更高的ipythonipython也不知道的话也自己百度去。
下面看这个图,先来讲这三个东西。变量常量Tensor

image.png

变量

所谓变量就是可以变的量。跟a=1差不多。看他们的类型tf.Variable

import tensorflow as tf
a=tf.Variable(1)
b=tf.Variable(1.)
c=tf.Variable([2,3])
print(a)
print(b)
print(c)
-----------------------------------------
<tf.Variable 'Variable_12:0' shape=() dtype=int32_ref>
<tf.Variable 'Variable_13:0' shape=() dtype=float32_ref>
<tf.Variable 'Variable_14:0' shape=(2,) dtype=int32_ref>

常量

就是一个常量,固定不变的数。

a=tf.constant(2)
b=tf.constant(2.)
c=tf.constant([2,3])
print(a)
print(b)
print(c)
-----------------------------------------
Tensor("Const_4:0", shape=(), dtype=int32)
Tensor("Const_5:0", shape=(), dtype=float32)
Tensor("Const_6:0", shape=(2,), dtype=int32)

ta是一个Tensor类型,表示几维的数组(矩阵)。

1    #维度为0的标量
[1,2,3]   #维度为1,一维向量
[[1,2],[3,4]]   #维度为2, 二维矩阵
[[[1,2],[3,4]],[[1,2],[3,4]]]   #维度为3,3维空间矩阵

那么问题来了,我这个abc里面存的数咋没print出来?

Session

一个执行器(为了方便理解,貌似只有我这么叫hhh)。你要把你的变量、常量、计算公式交给他,ta去算完给你个结果。

with tf.Session() as sess:
    v1v= sess.run(tf.constant(2))
    print(v1v)
-----------------------------------------
2

除了这种写法还有:

sess = tf.Session()
#通过session里面的run()函数来运行结果
print(sess.run(a))
#或者
print(a.eval(session=sess))
#任务完毕,关闭会话,Session对象在使用完毕后需要关闭以释放资源
sess.close()
-----------------------------------------
2
# 交互式
sess = tf.InteractiveSession()
print(a.eval())
-----------------------------------------
2

我们来运算一下

v1 = tf.Variable(10)
c1 = tf.constant(10)
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    c=sess.run(v1*c1)
    print(c)
-----------------------------------------
100

这里有两个需要注意的:

占位符placeholder

placeholder他先站住位置,之后再往里放数也就是所谓的feed(喂)给它数据。通过字典的形式传入。

m1= tf.placeholder(tf.int32)
m2= tf.placeholder(tf.int32)
addm=tf.add(m1,m2)
with tf.Session() as sess:
    b=sess.run(addm,feed_dict={m1:[1,2,3],m2:[4,5,6]})
    print(b)
-----------------------------------------
[5 7 9]

此时我们再引入两个概念

图与节点(graphs and op)

y=kx+b
刚才是做最简单的乘法预算。现在这个图是y=kx+b
每一次运算都是一个图谱,都是Tensor(数据又译:张量)flow(流向)各个op(节点)。
这就是为什么叫TensorFlow
图里的MatMul还有Add都是一个节点。

节点和图在代码里的模样:

m1= tf.placeholder(tf.int32)
m2= tf.placeholder(tf.int32)
addm=tf.add(m1,m2)
with tf.Session() as sess:
    #运行第一个graphs,放一个tf.add节点
    b=sess.run(addm,feed_dict={m1:[1,2,3],m2:[4,5,6]})
    #运行第二个graphs,放一个tf.add节点
    c=sess.run(addm,feed_dict={m1:[1,2,3],m2:[4,5,6]})
    print(b)
    print(c)

下一期待定,我再学一学。。。

上一篇 下一篇

猜你喜欢

热点阅读