Tensorflow基础篇_1

2022-09-13 14:57:49 浏览数 (1)

加法运算

例子

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: 会话,用来运算程序的图(一次只能运行一个图结构)

  1. 图默认已经注册,一组表示tf.operation 计算单位的对象和tf.Tensor表示操作之间流动的数据单元的对象
  2. 调用方法
  • 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()方法:

  1. 运行多个op: sess.run([a, b, sum])
  2. 不能直接运行普通数字,只能运行op, tensor,但可运行:sess.run(1 constant(3.0))
  3. 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

  1. 属性:
  • 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’)

暂时就就写到这了,后续请看下一篇哦…

0 人点赞