计算图

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. [转]std::set、自定义类型与比较函数

    转自:http://www.189works.com/article-42025-1.html 怎样在set中放入自定义类型?这个问题通过谷歌就可以得到不少答案:1.定义一个函数对象并在定义set的时 ...

  2. qt使用动态库(DLL)

    本文主要讲解在QT开发环境中如何使用VC生成的DLL及QT自身生成的DLL.至于其它情况本文不作讨论. 连接库分为2种 (1)动态连接库,通常有.h .lib .dll三个文件,功能实现在dll中 ( ...

  3. Flask小demo---代码统计系统

    功能要求: 管理员登录 # 第一天 班级管理 # 第一天 学生管理 # 第一天 学生登录 上传代码(zip文件和.py文件) 查看个人提交记录列表 highchar统计 学生列表上方使用柱状图展示现班 ...

  4. C# Guid 16位 唯一

    public static class GuidExtentions { /// <summary> /// 根据GUID获取16位的唯一字符串 /// </summary> ...

  5. 【Android开发日记】之入门篇(十二)——Android组件间的数据传输

    组件我们有了,那么我们缺少一个组件之间传递信息的渠道.利用Intent做载体,这是一个王道的做法.还有呢,可以利用文件系统来做数据共享.也可以使用Application设置全局数据,利用组件来进行控制 ...

  6. spark和hadoop比较

    来源知乎 计算模型:hadoop-MapReduce,Spark-DAG(有向无环图)评注:经常有人说Spark就是内存版的MapReduce,实际上不是的.Spark使用的DAG计算模型可以有效的减 ...

  7. MyEclipse自带且常用的快捷键和自己定义的快捷键方法步骤

    1.MyEclipse自带且常用的快捷键 内容提示(补全): Alt+/    导包快捷键: Ctrl+Shift+o    格式化代码: Ctrl+Shift+f    行代码位置上下调换: Alt ...

  8. thinkphp辅助方法,数据库操作

  9. 关于UrlEncode 一团乱麻的问题,后续彻底理解。Java中的 URLEncoder 与 URLDecoder无bug

    很多开放平台都是小白开发的,对这个urlencode理解的不到位,他们总是认为java官方的urlencode有bug,需要 URLEncoder.encode("Hello World&q ...

  10. CF312B 【Archer】

    容易算出这人第一次胜利的概率,第二次的,第三次的…… 好像可以无限乘下去 但是这题精度卡到1e-6 不妨设一个eps,当这次胜率小于eps时,就break掉,反正它已经不影响答案了 我设的是eps=1 ...