计算图

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/

 import tensorflow as tf

 '''
计算图 tensorflow是一个通过计算图的形式来表示计算的编程系统
tensorflow中每一个计算都是计算图上的一个节点
节点之间的边描述了计算之间的依赖关系
'''
# 1 计算图的使用
# 获得系统默认的计算图
# print(tf.get_default_graph) # <function get_default_graph at 0x7f484912be18>
# 生成新的计算图
g1 = tf.Graph()
with g1.as_default():
# 在计算图g1中定义变量v 设置为0
v = tf.get_variable(name="v",
initializer=tf.zeros_initializer(),
shape=[1])
g2 = tf.Graph()
with g2.as_default():
# 在图g2中定义变量v 初始值1
v = tf.get_variable(name="v",
initializer=tf.ones_initializer(),
shape=[1]) # 在图1中读取变量v的值
with tf.Session(graph=g1) as sess:
# 初始化所有变量
tf.initialize_all_variables().run()
with tf.variable_scope("", reuse=True):
print(sess.run(tf.get_variable(name="v"))) # [0.] # 在图2中读取变量v的值
with tf.Session(graph=g2) as sess:
# 初始化所有变量
tf.initialize_all_variables().run()
with tf.variable_scope("", reuse=True):
print(sess.run(tf.get_variable(name="v"))) # [1.] g = tf.Graph()
# 指定运行设备
with g.device("/gpu:0"):
pass '''
张量 tensor
张量可以简单理解成多维数组
零阶张量为 标量 scala 也就是一个数
n阶张量可以理解为n维数组 张量没有保存真正的数字 而是保存一个结果运算过程的引用 并不会执行加法运算
获得一个张量 使用tf.constant(value, name, shape, dtype)
dtype为数值类型,不同类型之间不能进行操作 '''
# tf.constant 是一个计算 结果为一个张量
a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([2.0, 3.0], name="b")
result = tf.add(a, b, name="add")
# print(result) # Tensor("add:0", shape=(2,), dtype=float32) '''
会话 session
会话用来执行定义好的运算
管理tensorflow运行时的资源
计算完成后资源回收
会话指定之后 可以通过tf.Tensor.eval() 来计算一个张量的取值
'''
# 开启会话
with tf.Session() as sess:
with sess.as_default(): # 注册默认会话 计算张量的值
# result为之前张量a和b的加法引用
print(result.eval()) # [3. 5.] '''
变量
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 定量值
'''
# 声明一个变量 随机生成 2*3的矩阵 满足正太分布 均值为0 标准差为2
weights = tf.Variable(tf.random_normal(shape=[2,3], stddev=2, mean=0))
# 生成三个零的数组变量
bias = tf.Variable(tf.zeros(shape=[3]))
# 也支持用其他变量初始化的形式声明变量
# 与weight相同
w2 = tf.Variable(weights.initialized_value())
# 是weight的两倍
w3 = tf.Variable(weights.initialized_value()*2)

机器学习之路: 初识tensorflow 第一个程序的更多相关文章

  1. 机器学习之路: tensorflow 自定义 损失函数

    git: https://github.com/linyi0604/MachineLearning/tree/master/07_tensorflow/ import tensorflow as tf ...

  2. 机器学习之路:tensorflow 深度学习中 分类问题的损失函数 交叉熵

    经典的损失函数----交叉熵 1 交叉熵: 分类问题中使用比较广泛的一种损失函数, 它刻画两个概率分布之间的距离 给定两个概率分布p和q, 交叉熵为: H(p, q) = -∑ p(x) log q( ...

  3. 机器学习之路: tensorflow 一个最简单的神经网络

    git: https://github.com/linyi0604/MachineLearning/tree/master/07_tensorflow/ import tensorflow as tf ...

  4. 【tensorflow】tensorflow学习记录——安装、第一个程序篇

    机器学习,人工智能往后肯定是一个趋势,现阶段有必要研究一两个人工智能的工具,以免自己技术落伍,其中tensorflow就是一个很不错的项目,有谷歌开发后开源,下面开始学习安装和使用 安装篇: 很不幸, ...

  5. 我的QT5学习之路(二)——第一个程序

    一.前言 “工欲善其事,必先利其器”,上一节,我介绍了Qt的安装和配置方法,搭建了基本的开发平台.这一节,来通过一个简单的例子来了解Qt的编程样式和规范,开始喽~~~ 二.第一个程序——Hello W ...

  6. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

  7. iOS狂暴之路---iOS的第一个应用中能学到哪些知识

    一.前文回顾 在之前已经介绍了 iOS的学习路线图,因为中间遇到一些Android开发问题,所以就耽搁了一段时间,那么接下来的这段时间我们将继续开始iOS的狂暴之路学习,按照国际惯例,第一个应用当然是 ...

  8. tensorflow初次接触记录,我用python写的tensorflow第一个模型

    tensorflow初次接触记录,我用python写的tensorflow第一个模型 刚用python写的tensorflow机器学习代码,训练60000张手写文字图片,多层神经网络学习拟合17000 ...

  9. Hibernate5笔记1--Hibernate简介和第一个程序

    Hibernate简介: Hibernate是一个开放源代码的ORM(对象关系映射)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hib ...

随机推荐

  1. 训练赛第三场A题 zoj 559

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2559 解题报告:比赛的时候的想法是可以确定至少有两对相切的圆,所 ...

  2. 关于数据区间变换及numpy数组转图片数据的python实现

    python实现区间转换.numpy图片数据转换 需求: 客户的需求是永无止境的,这不?前几天,用户提出了一个需求,需要将一组数据从一个区间缩放到另一区间? 思路: 先将数据归一化,再乘以对应区间的差 ...

  3. 2016.6.20——Plus One

    Plus One 本题收获 1.vector<int> 和vector<char>的区别,及与int转换 从vector<int> nums 转换为int res型 ...

  4. redis数据淘汰机制

    volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用 的数据淘汰 volatile-ttl:从已设置过期时间的数据集(server.db[i ...

  5. OpenJDK,Oracle's OpenJDK,Oracle JDK的区别与选择

    OpenJDK 单纯的OpenJDK指的是JDK的源码,以GPL协议开源,由企业和社区开发者共同维护和开发. Oracle's OpenJDK Oracle started providing ope ...

  6. 栈应用之 后缀表达式计算 (python 版)

    栈应用之 后缀表达式计算 (python 版) 后缀表达式特别适合计算机处理 1.  中缀表达式.前缀表达式.后缀表达式区别  中缀表达式:(3 - 5) * (6 + 17 * 4) / 3 17 ...

  7. Elasticsearch 邻近查询示例

    Elasticsearch 邻近查询示例(全切分分词) JAVA API方式: SpanNearQueryBuilder span = QueryBuilders.spanNearQuery(); s ...

  8. UE简单配置

    1 头上显示文件位置和名称,视图->视图列表——>打开文件标签,在右面点放大 2 函数列表,视图->视图列表——>打开文件标签

  9. TypeScript的配置文件 tsconfig.json

    //tsconfig.json指定了用来编译这个项目的根文件和编译选项 { "compilerOptions": { //compilerOptions:编译选项,可以被忽略,这时 ...

  10. 如何在VS2013创建WebService并在IIS中发布

    第一步:打开VS2013,选择文件->新建->项目. 第二步:选择[ASP.net 空web应用程序],将其命名为自己想的工程名称. 第三步:然后右键点击工程,添加->web服务.然 ...