tensorflow相关概念

0.数据的基本形式

  • 标量:数值形式
  • 向量:一维标量
  • 矩阵:二维标量
  • 张量:多维标量

1.什么是tensorflow?

  • tensorflow是用于表示某种类型的计算抽象(计算图)的框架;
  • tensor:N维矩阵;
  • flow:基于数据流图的计算;
  • tensorflow:张量从图的一端流到另一端;

2.为什么要使用tensorflow?

  1. 网络训练过程:在训练中,需要连续的将多批新数据输入网络,计算网络输出,根据代价函数统计误差,对参数求导来更新网络;
  2. 问题:①加入数据的规模较大;②频繁的求导运算;
  3. tensorflow优点:①分布式计算解决规模问题;②函数对于tensor变量可以实现自动求导,从而解决求导问题;
  4. 其他优点:①基于图的运算,在GPU上运行较快;②编译效率高;③生成网络拓扑结构 与可视化;④支持多种设备;

3.基本结构

(1)可以通过tensor、variable、operation等构造计算图;

(2)一个Session可以包含多个计算图;

4.基本概念

(1)计算图

一种全局数据结构,表示为有向图的形式,用于捕获有关计算的指令;

tf.Tensor对象:指向刚刚建立的节点的指针;

说明:计算图仅仅包含计算的步骤,不包含结果;

(2)会话

是什么?:包含一个指向全局图的指针,该指针指向所有的节点的指针可以不断变化,所以在创建节点之前或之后都可以创建会话;

作用:处理内存分配和优化,使得计算图指定的任务可以执行;

使用:sess.run(node)或sess.run([node1,node2...])

# 在实验中同时完成多个操作,减少系统开销
result,num1 = sess.run([sum1,num1])

尽量在一次中完成多个项目,避免重复调用,减少系统开销;


# coding=utf-8
# Session的两种启动方式(推荐方式1)
import tensorflow as tf
num1 = tf.constant(3)  # 变量3
num2 = tf.constant(2)  # 变量2
sum1 = tf.add(num1,num2)  # 两数相加
print(sum1)  # Tensor("Add:0", shape=(), dtype=int32)

# 方式1
with tf.Session() as sess:
    result = sess.run(sum1)
    print(result)
# 结果:5

# 方式2
sess = tf.Session()
result = sess.run(sum1)
print(result)
sess.close()

(3)占位符 与feed

占位符:是一种用于接受外部输入的节点;

使用:sess.run(node,feed_dict={name:value})#数据的输入以字典的形式,value可以为数值或numpy数组;

# coding=utf-8
#feed:实现值传入,并计算结果
import tensorflow as tf
#创建占位符
input1 = tf.placeholder(tf.float64)
input2 = tf.placeholder(tf.float64)
#两数相乘
result = tf.multiply(input1,input2)
with tf.Session() as sess:
    #feed的数据以字典的形式传入
    print(sess.run(result,feed_dict={input1:[2.],input2:[7.]}))
# 结果:[ 14.]

(4)计算路径

依赖于图中其他节点的运算值时,需要先调用sess.run()完成其他节点的计算;

仅仅通过必须的节点便可以自动进行计算;

(5)变量

  1. 变量创建:
    #方式1
    op1 = tf.Variable([[3,3]],name='op1')
    #方式2
    v1 = tf.get_variable('v1', shape=[5], initializer=tf.constant_initializer())

     

  2. 变量的状态维持(tf.assign())
    # coding=utf-8
    '''
    Variable实现计数器功能:通过循环和加法实现
    '''
    import tensorflow as tf
    #定义变量
    state = tf.Variable(0,name='counter')
    #定义常量
    count = tf.constant(1)
    #计算两数之和
    new_state = tf.add(state,count)
    #将计算值更新(将new_state的值赋值给state)
    update = tf.assign(state,new_state)
    #存在变量时需要初始化
    init = tf.initialize_all_variables()
    #Session启动计算任务
    with tf.Session() as sess:
        sess.run(init)#Session初始化变量
        for _ in range(3):
            sess.run(update)
            print(sess.run(state))
    

     

  3. 变量需要初始化   
    #方法1
    init = tf.global_variables_initializer()
    #方法2
    init = tf.initialize_all_variables()
     

5.应用注意

(1)如何将计算表示成图

(2)Session启动图运算

(3)数据-->tensors

(4)使用Variable来保持状态信息

(5)数据的填充与获取

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值