加法运算
例子
import tensorflow as tf
a = tf.constant(5.0)
b = tf.constant(6.0)
sum = tf.add(a, b)
with tf.Session as sess:
sess.run(sum)
其中:sess.run() 是启动整个graph
sess.close()是释放资源
tf.Session(graph=’指定运行的graph’, config = tf.ConfigProto(log_device_placement=True))
config可以设置之后可以查看运行情况
运行时的警告:
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
元素
tensor:张量
operation(op): 专门运算的操作节点,所有操作都是一个op
graph: 图,整个程序的结构
session: 会话,用来运算程序的图(一次只能运行一个图结构)
图
- 图默认已经注册,一组表示tf.operation 计算单位的对象和tf.Tensor表示操作之间流动的数据单元的对象
- 调用方法
- tf.get_default_graph()
- a.graph
- sum.graph
- sess.graph
3. 创建与使用
- 创建:tf.graph()
- 使用:
g = tf.Graph()
with g.as_default():
a = tf.constant(1.0)
assert c.graph is g
4. op:只要使用tensorflow的api定义的函数都是op
5. tensor: 就指代的事数据
会话
分类:
- 前端系统:定义程序的图的结构,如,python API
- 后端系统:运算图结构,如,cpu, gpu
- 会话即为前后端之间的桥梁,功能有:1. 运行图结构,2. 分配资源,3. 掌握资源
交互式(命令行):
import tensorflow as tf
a = tf.constant(3.0)
tf.InteractiveSession()
a.eval() # 3.0
只要有会话的上下文环境,就可用eval()直接运行。
run()方法:
- 运行多个op: sess.run([a, b, sum])
- 不能直接运行普通数字,只能运行op, tensor,但可运行:sess.run(1 constant(3.0))
- feed_dict:一个字典,键:plt, 值:要填充的数据
实时提供数据,需要使用placeholder来提供一个占位符:
plt = tf.placeholder(type = tf.float32, shape = [2,3])
sess.run(plt, feed_dict={plt: [[1, 2, 4][5, 7, 8]]}
张量Tensor
- 属性:
- graph:图
- name:op的名称
- op:op的结构
- shape:形状(0维:(),1维:(5),2维:(2, 4),3维:(3, 2, 5))
2. 形状的改变:
- 静态形状:
plt = tf.placeholder(tf.float32, [None, 2])
plt.set_shape([3, 2])
性质:
a. 不新建tensor
b. 一旦设置为固定值之后,则不可再修改
c. 维数不能修改,只能同维度下修改
- 动态形状
tf.reshape(tensor=plt, shape=[2, 3])
性质:
a. 新建一个tesnor
b. 可一直修改
c. 可夸维修改,即可修改维数,但是元素个数必须匹配。
3. 操作
a. 生成张量
tf.zeros(shape, dtype = df.float32, name=None)
tf.ones(shape, dtype = df.float32, name=None)
tf.constant(value, shape=None, dtype = Noen, name=None)
tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
b. 修改类型
tf. string_to_number(string_tensor, out_type=None, name=None)
tf.todouble(x, name=’toDouble’)
暂时就就写到这了,后续请看下一篇哦…