zoukankan      html  css  js  c++  java
  • 机器学习之路: 初识tensorflow 第一个程序

    计算图

    tensorflow是一个通过计算图的形式来表示计算的编程系统
    tensorflow中每一个计算都是计算图上的一个节点
    节点之间的边描述了计算之间的依赖关系

    张量 tensor
    张量可以简单理解成多维数组
    零阶张量为 标量 scala 也就是一个数
    n阶张量可以理解为n维数组

    张量没有保存真正的数字 而是保存一个结果运算过程的引用 并不会执行加法运算
    获得一个张量 使用tf.constant(value, name, shape, dtype)
    dtype为数值类型,不同类型之间不能进行操作

    会话 session
    会话用来执行定义好的运算
    管理tensorflow运行时的资源
    计算完成后资源回收
    会话指定之后 可以通过tf.Tensor.eval() 来计算一个张量的取值

    变量
    tf.Variable
    作用是保存和更新神经网络中的参数
    经常用随机数来初始化变量
    常用的随机数生成器:
    tf.random_normal 正太分布
    tf.truncated_normal 正太分布 如果平均值超过两个标准差就重新随机
    tf.random_uniform 均匀分布
    tf.random_gamma Gamma分布
    tf.zeros 产生全0数组
    tf.ones 产生全1数组
    tf.fill 给定数字数组
    tf.constant 定量值

    git:  https://github.com/linyi0604/MachineLearning/tree/master/07_tensorflow/

      1 import tensorflow as tf
      2 
      3 
      4 '''
      5 计算图
      6 
      7 tensorflow是一个通过计算图的形式来表示计算的编程系统
      8 tensorflow中每一个计算都是计算图上的一个节点
      9 节点之间的边描述了计算之间的依赖关系
     10 '''
     11 # 1 计算图的使用
     12 # 获得系统默认的计算图
     13 # print(tf.get_default_graph)     # <function get_default_graph at 0x7f484912be18>
     14 # 生成新的计算图
     15 g1 = tf.Graph()
     16 with g1.as_default():
     17     # 在计算图g1中定义变量v 设置为0
     18     v = tf.get_variable(name="v",
     19                         initializer=tf.zeros_initializer(),
     20                         shape=[1])
     21 g2 = tf.Graph()
     22 with g2.as_default():
     23     # 在图g2中定义变量v 初始值1
     24     v = tf.get_variable(name="v",
     25                         initializer=tf.ones_initializer(),
     26                         shape=[1])
     27 
     28 # 在图1中读取变量v的值
     29 with tf.Session(graph=g1) as sess:
     30     # 初始化所有变量
     31     tf.initialize_all_variables().run()
     32     with tf.variable_scope("", reuse=True):
     33         print(sess.run(tf.get_variable(name="v")))   # [0.]
     34 
     35 # 在图2中读取变量v的值
     36 with tf.Session(graph=g2) as sess:
     37     # 初始化所有变量
     38     tf.initialize_all_variables().run()
     39     with tf.variable_scope("", reuse=True):
     40         print(sess.run(tf.get_variable(name="v")))  # [1.]
     41 
     42 
     43 g = tf.Graph()
     44 # 指定运行设备
     45 with g.device("/gpu:0"):
     46     pass
     47 
     48 
     49 
     50 '''
     51 张量 tensor
     52 张量可以简单理解成多维数组
     53 零阶张量为 标量 scala   也就是一个数
     54 n阶张量可以理解为n维数组
     55 
     56 张量没有保存真正的数字 而是保存一个结果运算过程的引用 并不会执行加法运算
     57 获得一个张量 使用tf.constant(value, name, shape, dtype)
     58 dtype为数值类型,不同类型之间不能进行操作
     59 
     60 '''
     61 # tf.constant 是一个计算 结果为一个张量
     62 a = tf.constant([1.0, 2.0], name="a")
     63 b = tf.constant([2.0, 3.0], name="b")
     64 result = tf.add(a, b, name="add")
     65 # print(result)   # Tensor("add:0", shape=(2,), dtype=float32)
     66 
     67 
     68 '''
     69 会话 session
     70 会话用来执行定义好的运算
     71 管理tensorflow运行时的资源
     72 计算完成后资源回收
     73 会话指定之后 可以通过tf.Tensor.eval() 来计算一个张量的取值
     74 '''
     75 # 开启会话
     76 with tf.Session() as sess:
     77     with sess.as_default(): # 注册默认会话 计算张量的值
     78         # result为之前张量a和b的加法引用
     79         print(result.eval())    # [3. 5.]
     80 
     81 
     82 '''
     83 变量
     84 tf.Variable
     85 作用是保存和更新神经网络中的参数
     86 经常用随机数来初始化变量
     87 常用的随机数生成器:
     88     tf.random_normal 正太分布
     89     tf.truncated_normal 正太分布 如果平均值超过两个标准差就重新随机
     90     tf.random_uniform 均匀分布
     91     tf.random_gamma Gamma分布
     92     tf.zeros 产生全0数组
     93     tf.ones 产生全1数组
     94     tf.fill 给定数字数组
     95     tf.constant 定量值
     96 '''
     97 # 声明一个变量 随机生成 2*3的矩阵 满足正太分布 均值为0 标准差为2
     98 weights = tf.Variable(tf.random_normal(shape=[2,3], stddev=2, mean=0))
     99 # 生成三个零的数组变量
    100 bias = tf.Variable(tf.zeros(shape=[3]))
    101 # 也支持用其他变量初始化的形式声明变量
    102 # 与weight相同
    103 w2 = tf.Variable(weights.initialized_value())
    104 # 是weight的两倍
    105 w3 = tf.Variable(weights.initialized_value()*2)
  • 相关阅读:
    nyoj 117 求逆序数 (归并(merge)排序)
    2018年四川理工学院软件工程考试大纲(软件需求分析)
    2018年四川理工学院软件工程考试大纲(软件计划与可行性研究)
    hdu 1166 敌兵布阵 (线段树、单点更新)
    hdu 1754 I Hate It (线段树、单点更新)(PS:ios::sync_with_stdio(false)可以加快cin、cout的读取写出速度)
    周末手撸管理系统(一)
    drf源码save以及response
    drf框架serializers中ModelSerializer类简化序列化和反序列化操作
    drf框架序列化和返序列化
    django模型中有外键关系的表删除相关设置
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/9145155.html
Copyright © 2011-2022 走看看