深度学习:Tensorflow的基本概念和张量

计算密集型(cpu计算)
    -tensorflow
IO密集型(web,磁盘)
    -django
    -scrapy

1、基本概念

tensor 张量-数据结构
op 专门运算的操作节点
graph 图:整个程序的结构
session 会话:运算程序的图

图默认已经注册:
一组表示tf.Operation计算单位的对象
和 tf.Tensor表示操作之间流动的数据单位的对象

获取图

graph = tf.get_defaul_graph()

默认图,相当于给程序分配内存

创建图

g = tf.Graph()
with g.as_default():
    pass

op: 只要使用tensorflow的API定义函数都是OP
tensor: 指代的就是数据

tensorflow
-前端系统:定义程序的图的机构
-后端系统:运算图结构

会话:
-运行图的机构
-分配资源计算
-掌握资源(变量的资源,队列,线程)

使用 1

session = tf.Session()
session.run()
session.close()

使用 2 上下文管理器

with tf.Session() as session:
    session.run()

Session参数:
1、可以指定图 graph参数
2、显示运行设备
config = tf.ConfigProto(log_device_placement=True)

命令行交互

>> import tensorflow as tf
>> tf.InteractiveSession()

只要有会话开启,就可以使用

varible.eval()

session.run()

参数:

fetches 变量,列表,元组
namedtuple,dict,OrderDict
重载的运算符,默认会给运算符重载为op了O型

注意:不是op不能运算

feed_dict 训练数据,实时提供数据去进行训练
placeholder 占位符

# None为不固定长度
plt = tf.placeholder(tf.float32, shape=[None, 3])

data = [[1, 2, 3], [4, 5, 6]]
with tf.Session() as session:
    session.run(plt, fead_dict={plt: data})

张量

numpy as np
数组 ndarray  矩阵      张量 tensor = ndarray
0维           2维       
1维
2维

2、基本数据格式

一个类型化的N维度数组(tf.Tensor)
Tensor(名称, 维度形状, 数据类型)

常用数据类型
tf.float32
tf.int32

张量的属性
graph图
op操作名
name 字符串描述
shaple 形状
0维()
1维(4)
2维(3, 4)
3维(3, 4, 2)

Numpy reshape 直接修改形状

动态形状和静态形状
在于有没有生成一个新的张量数据

静态形状
tf.Tensor.get_shape()
tf.Tensor.set_shape()
静态形状,一旦张量形状固定了,不能再次设置,不能跨维度修改
1D-> 1D 2D->2D

动态形状
tf.reshape()
动态形状可以去创建一个新的张量, 元素数量要匹配
1D -> 2D 1D->3D

# 静态形状
plt = tf.placeholder(tf.float32, (None, 2))
plt.set_shape((3, 2))

# 动态形状
plt_reshape = tf.reshape(plt, (2, 3))

3、张量操作

3.1 创建张量

# 所有元素为0的张量
tf.zeros(shape, dtype=tf.float32, name=None)

tf.zeros_like(tensor, dtype=None, name=None)

tf.ones(shape, dtype=tf.float32, name=None)

tf.ones_like(tensor, dtype=None, name=None)

tf.fill(dims, value, name=None)

# 创建一个常数张量
tf.constant(value, dtype=None, shape=None, name="Const")

# 正态分布(高斯分布)随机张量
tf.truncated_normal(shape, mean=0.0,stddev=1.0, dtype=tf.float32, seed=None, name=None)

# 从正态分布中取随机数
tf.random_normal(shape, mean=0,0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

方差:数据的离散程度
平均值,标准差

张量变换

3.2 改变类型

tf.string_to_number(string_tensor, out_type=None, name=None)
tf.cast(x, dtype, name=None)

3.3 形状变换

tf.shape(input, name=None)
tf.reshape(tensor, shape, name=None)

# 切片扩展
tf.concat(values, axis, name="concat")
 

代码示例

import tensorflow as tf

tf.InteractiveSession()
a = [[1, 2, 3], [4, 5, 6]]
b = [[7, 8, 9], [10, 11, 12]]

c = tf.concat([a, b], axis=0)
c.eval()
Out[8]: 
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]], dtype=int32)

d = tf.concat([a, b], axis=1)
d.eval()
Out[10]: 
array([[ 1,  2,  3,  7,  8,  9],
       [ 4,  5,  6, 10, 11, 12]], dtype=int32)

4、Tensor提供的API

  • 算术运算
  • 基本数据函数
  • 矩阵运算
  • 减少维度的运算(求平均值)
  • 序列运算

https://www.tensorflow.org/versions/r1.10/api_guides/python/math_ops

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值