深度学习入坑(一)

以后要用到深度学习做图像识别。

然后使用TensorFlow+WIN+ANACONDA自己摸索。

做了MNIST之后发现自己不懂的太多。需要从0开始.....


1、TensorFlow需要了解的:

  • 使用图 (graph) 来表示计算任务.
  • 在被称之为 会话 (Session) 的上下文 (context) 中执行图.
  • 使用 tensor 表示数据.
  • 通过 变量 (Variable) 维护状态.
  • 使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据.
  • 图中的节点被称之为 op (operation 的缩写). 一个 op 获得 0 个或多个 Tensor(张量), 执行计算, 产生 0 个或多个 Tensor. 每个 Tensor 是一个类型化的多维数组. 
小结1:

 我们得到了几个概念:会话,图,op,Tensor。它们之间的关系可以表示为:
1、 图包含节点(op),op的执行步骤被描述成图。(节点可以用来表示施加的数学操作。也可以是数据的输入输出。)
op获得0或多个张量(Tensor),op执行的计算产生0~n个张量。可以理解为op作为变量常量方法的结合体。
2、这些过程要在会话中进行。图在会话中激活,会话分发op到设备(CPU,GPU)并提供计算方法。
3、一般来说,过程分为两个阶段,一是用一个图来表示和构建神经网络,二是反复执行图中的训练op。
import tensorflow as tf
#第一步 构建输入
# 创建两个常量,作为输入op.
# 加到默认图中.
# 构造器的返回值代表该常量 op 的返回值.
matrix1 = tf.constant([[3, 3]])#1x2
matrix2 = tf.constant([[2],[2]])#2x1
# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
# 返回值 'product' 代表矩阵乘法的结果.
product = tf.matmul(matrix1, matrix2)
# 启动默认图.
sess = tf.Session()
# 调用 sess 的 'run()' 方法来执行矩阵乘法 op, 传入 'product' 作为该方法的参数. 
# 整个执行过程是自动化的, 会话负责传递 op 所需的全部输入. op 通常是并发执行的.
# 函数调用 'run(product)' 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op) 的执行.
# 返回值 'result' 是一个 numpy 'ndarray'对象.
result = sess.run(product)
print (result) #==12
# 任务完成, 关闭会话.
ss.close()
2、关于初学者常用到的类 方法 :
1.Session类。会话类。图在调用它之后才被激活。如果没有使用交互式的会话。一般来说要使用run()方法来运行op的运算和初始化。如果是交互式的话,可以用xx.eval()代替run()方法。
非交互式会话:
#乘法
def Sub():

    x=tf.Variable(0,name="one");#新建一个变量op,初始化为0
    a=tf.constant(1);#常量op
    new_value=tf.matmul(x,a);#运算op,做乘法运算
    update=tf.assign(x,new_value);#这个op包括两个op。将new_value给x。
    #初始化所有变量
    init_op=tf.global_variables_initializer();
    with tf.Session() as sess:
            sess.run(init_op);#运行这个op
            print("new_value=%g"%sess.run(new_value));#new_value是一个op。需要使用run 方法运行
            #运行update这个节点。更新x的值
            for i in range(3):
                sess.run(update);
                print(x.eval());
            print("new_value=%g"%sess.run(new_value));
交互式:
def Sub2():
    sess=tf.InteractiveSession();
    x=tf.Variable(0,name="matmul");
    a=tf.constant(2)
    x.initializer.run();#初始化x
    res=tf.subtract(x,a);
    update=tf.assign(x,res);
    for i in range(3):
        print(update.eval());
    print(res.eval())
占位符:
placeholder(dtype,shape,name):类似函数形参.参数分别代表数据类型,维度([1,3]代表1行3列),名称
可以作为run()的参数使用
input1=tf.placeholder(tf.float32,[1,2])#输入1.1X2的矩阵
input2=tf.placeholder(tf.float32,[2,1])#2X1的矩阵
output=tf.matmul(input1,input2);
sess=tf.Session();
print(sess.run([output],feed_dict={input1:[[1,2]],input2:[[2],[1]]}))




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值