机器学习之路: 初识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/
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 第一个程序的更多相关文章
- 机器学习之路: tensorflow 自定义 损失函数
git: https://github.com/linyi0604/MachineLearning/tree/master/07_tensorflow/ import tensorflow as tf ...
- 机器学习之路:tensorflow 深度学习中 分类问题的损失函数 交叉熵
经典的损失函数----交叉熵 1 交叉熵: 分类问题中使用比较广泛的一种损失函数, 它刻画两个概率分布之间的距离 给定两个概率分布p和q, 交叉熵为: H(p, q) = -∑ p(x) log q( ...
- 机器学习之路: tensorflow 一个最简单的神经网络
git: https://github.com/linyi0604/MachineLearning/tree/master/07_tensorflow/ import tensorflow as tf ...
- 【tensorflow】tensorflow学习记录——安装、第一个程序篇
机器学习,人工智能往后肯定是一个趋势,现阶段有必要研究一两个人工智能的工具,以免自己技术落伍,其中tensorflow就是一个很不错的项目,有谷歌开发后开源,下面开始学习安装和使用 安装篇: 很不幸, ...
- 我的QT5学习之路(二)——第一个程序
一.前言 “工欲善其事,必先利其器”,上一节,我介绍了Qt的安装和配置方法,搭建了基本的开发平台.这一节,来通过一个简单的例子来了解Qt的编程样式和规范,开始喽~~~ 二.第一个程序——Hello W ...
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
- iOS狂暴之路---iOS的第一个应用中能学到哪些知识
一.前文回顾 在之前已经介绍了 iOS的学习路线图,因为中间遇到一些Android开发问题,所以就耽搁了一段时间,那么接下来的这段时间我们将继续开始iOS的狂暴之路学习,按照国际惯例,第一个应用当然是 ...
- tensorflow初次接触记录,我用python写的tensorflow第一个模型
tensorflow初次接触记录,我用python写的tensorflow第一个模型 刚用python写的tensorflow机器学习代码,训练60000张手写文字图片,多层神经网络学习拟合17000 ...
- Hibernate5笔记1--Hibernate简介和第一个程序
Hibernate简介: Hibernate是一个开放源代码的ORM(对象关系映射)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hib ...
随机推荐
- C. Connect Three(构造)
题目链接:http://codeforces.com/contest/1087/problem/C 题目大意:给你三个点的坐标,让你用尽可能少的方块,让这三个点连起来. 具体思路: 我们先对这三个点进 ...
- windows 10 部署flask web
起因 本来想这用django 写一个web 应用程序,便于管理mongodb的数据.结果django 不直接支持mongodb……又没时间研究NoSQL.于是想着随便整个api吧…… 于是先用flas ...
- MySQL防范SQL注入风险
MySQL防范SQL注入风险 0.导读 在MySQL里,如何识别并且避免发生SQL注入风险 1.关于SQL注入 互联网很危险,信息及数据安全很重要,SQL注入是最常见的入侵手段之一,其技术门槛低.成本 ...
- ubuntu复制文件或目录
转自http://www.linuxidc.com/Linux/2008-11/17179.htm cp(copy)命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 语法: cp [选项 ...
- 聊天室(下篇)GatewayWorker 与 Laravel 的整合
思路 上一篇大概梳理了一下 GatewayWorker 的基础知识.这篇就来准备整合 GatewayWorker 到 Laravel. GatewayWorker 是基于 Socket 监听的服务器框 ...
- 如何提高单片机Flash的擦写次数
所谓提高flash的擦写次数,并不是真正的提高flash擦写次数,而是通过以"空间换时间"概念,在软件上实现“操作的次数大于其寿命”.详见链接: http://bbs.eeworl ...
- vue总结 03过滤器
过滤器 Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持).过滤器应该被添加在 JavaS ...
- python目录/文件操作
目录操作 sys.argv[0] # 获得当前脚本路径,即当前工作目录\脚本名 os.getcwd() # 获得当前工作目录 os.path.abspath('.') # 获得当前工作目录 os.pa ...
- $()与document.getElementById
$('#a')是返回一个jquery对象 $('#a')[0]是一个element对象 document.getElementById('a') return 一个element对象
- Tango ROS Streamer
谁想要在Android平台上编写机器人应用,或者谁希望扩展其与室内定位和3D感知新的传感器的机器人开发,Intermodalics创建的ROS Streamer应用的Tango. 这个Android应 ...