python3.6.5安装tensorflow_tensorflow(一)windows 10 python3.6安装tensorflow1.4与基本概念解读...

2023-11-19

一.安装

目前用了tensorflow、deeplearning4j两个深度学习框架,

tensorflow 之前一直支持到python 3.5,目前以更新到3.6,故安装最新版体验使用。

慢慢长征路:安装过程如下

WIN10:

anaconda3.5:

PYTHON3.6:

tensorflow1.4:

二.TensorFlow 基本概念与原理理解

1.TensorFlow 的工作原理

TensorFlow是用数据流图(data flow graphs)技术来进行数值计算的。数据流图是描述有向图中的数值计算过程。

有向图中,节点通常代表数学运算,边表示节点之间的某种联系,它负责传输多维数据(Tensors)。

节点可以被分配到多个计算设备上,可以异步和并行地执行操作。因为是有向图,所以只有等到之前的入度节点们的计算状态完成后,当前节点才能执行操作。

2.TensorFlow 基本用法

接下来按照官方文档中的具体代码,来看一下基本用法。你需要理解在TensorFlow中,是如何:

5步:

一.将计算流程表示成图;

二.通过Sessions来执行图计算;

三将数据表示为tensors;

四 使用Variables来保持状态信息;

五  分别使用feeds和fetches来填充数据和抓取任意的操作结果

使用TensorFlow,你必须明白TensorFlow:

使用图(graph)来表示任务

被称之为会话(Session)的上下文(context)中执行图

使用tensor表示数据

通过变量(Variable)维护状态

使用feed和fetch可以为任意操作(arbitrary operation)赋值或者从其中获取数据

案例

例1,生成三维数据,然后用一个平面拟合它:

以下是官网的操作案例import tensorflow as tf

import numpy as np

# 用 NumPy 随机生成 100 个数据

x_data = np.float32(np.random.rand(2, 100))

y_data = np.dot([0.100, 0.200], x_data) + 0.300

# 构造一个线性模型

b = tf.Variable(tf.zeros([1]))

W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))

y = tf.matmul(W, x_data) + b

# 最小化方差

loss = tf.reduce_mean(tf.square(y - y_data))

optimizer = tf.train.GradientDescentOptimizer(0.5)

train = optimizer.minimize(loss)

# 初始化变量

init = tf.global_variables_initializer()

#官网是tf.initialize_all_variables() 该函数将不再使用,在 2017年#3月2号以后;用 tf.global_variables_initializer() 替代 #tf.initialize_all_variables()

# 启动图 (graph)

sess = tf.Session()

sess.run(init)

# 拟合平面

for step in xrange(0, 201):

sess.run(train)

if step % 20 == 0:

print step, sess.run(W), sess.run(b)

# 输出结果为:

0 [[-0.14751725 0.75113136]] [ 0.2857058]

20 [[ 0.06342752 0.32736415]] [ 0.24482927]

40 [[ 0.10146417 0.23744738]] [ 0.27712563]

60 [[ 0.10354312 0.21220125]] [ 0.290878]

80 [[ 0.10193551 0.20427427]] [ 0.2964265]

100 [[ 0.10085492 0.201565 ]] [ 0.298612]

120 [[ 0.10035028 0.20058727]] [ 0.29946309]

140 [[ 0.10013894 0.20022322]] [ 0.29979277]

160 [[ 0.1000543 0.20008542]] [ 0.29992008]

180 [[ 0.10002106 0.20003279]] [ 0.29996923]

200 [[ 0.10000814 0.20001261]] [ 0.29998815]

接下来看具体概念:

TensorFlow 用图来表示计算任务,图中的节点被称之为operation,缩写成op。

一个节点获得 0 个或者多个张量 tensor,执行计算,产生0个或多个张量。

图必须在会话(Session)里被启动,会话(Session)将图的op分发到CPU或GPU之类的设备上,同时提供执行op的方法,这些方法执行后,将产生的张量(tensor)返回。

构建图

例2,计算矩阵相乘:import tensorflow as tf

# 创建一个 常量 op, 返回值 'matrix1' 代表这个 1x2 矩阵.

matrix1 = tf.constant([[3., 3.]])

# 创建另外一个 常量 op, 返回值 'matrix2' 代表这个 2x1 矩阵.

matrix2 = tf.constant([[2.],[2.]])

# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.

# 返回值 'product' 代表矩阵乘法的结果.

product = tf.matmul(matrix1, matrix2)

默认图有三个节点, 两个 constant() op, 和一个 matmul() op. 为了真正进行矩阵相乘运算, 并得到矩阵乘法的结果, 你必须在会话里启动这个图.

张量 Tensor

从向量空间到实数域的多重线性映射(multilinear maps)(v是向量空间,v*是对偶空间)

你可以把Tensorflow的tensor看做是一个n维的数组或列表。一个tensor包含一个静态类型rank和一个shape。

在Tensorflow系统中,张量的维数被描述为阶。但是张量的阶和矩阵的阶并不是同一个概念。张量的阶是张量维数的一个数量描述,下面的张量(使用python中list定义的)就是2阶:

t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

你可以认为一个二阶张量就是我们平常所说的矩阵,一阶张量可以认为是一个向量。对于一个二阶张量,你可以使用语句t[i, j]来访问其中的任何元素。而对于三阶张量你可以通过t[i, j, k]来访问任何元素:

形状

Tensorflow文档中使用了三种记号来方便地描述张量的维度:阶,形状以及维数。以下展示了它们之间的关系:

数据类型

除了维度,tensor有一个数据类型属性。你可以为一个张量指定下列数据类型中的任意一个类型:

在一个会话中启动图

创建一个 Session 对象, 如果无任何创建参数, 会话构造器将启动默认图。

会话负责传递 op 所需的全部输入,op 通常是并发执行的。# 启动默认图.

sess = tf.Session()

# 调用 sess 的 'run()' 方法, 传入 'product' 作为该方法的参数,

# 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op),

# 向方法表明, 我们希望取回矩阵乘法 op 的输出.

result = sess.run(product)

# 返回值 'result' 是一个 numpy `ndarray` 对象.

print result

# ==> [[ 12.]]

# 任务完成, 需要关闭会话以释放资源。

sess.close()

交互式使用

在 Python API 中,使用一个会话 Session 来 启动图, 并调用 Session.run() 方法执行操作.

为了便于在 IPython 等交互环境使用 TensorFlow,需要用 InteractiveSession 代替 Session 类, 使用 Tensor.eval() 和 Operation.run() 方法代替 Session.run()。

例3,计算 ‘x’ 减去 ‘a’:# 进入一个交互式 TensorFlow 会话.

import tensorflow as tf

sess = tf.InteractiveSession()

x = tf.Variable([1.0, 2.0])

a = tf.constant([3.0, 3.0])

# 使用初始化器 initializer op 的 run() 方法初始化 'x'

x.initializer.run()

# 增加一个减法 sub op, 从 'x' 减去 'a'. 运行减法 op, 输出结果

sub = tf.sub(x, a)

print sub.eval()

# ==> [-2. -1.]

变量 Variable

上面用到的张量是常值张量(constant)。

变量 Variable,是维护图执行过程中的状态信息的. 需要它来保持和更新参数值,是需要动态调整的。

下面代码中有 tf.initialize_all_variables,是预先对变量初始化,

Tensorflow 的变量必须先初始化,然后才有值!而常值张量是不需要的。

下面的 assign() 操作和 add() 操作,在调用 run() 之前, 它并不会真正执行赋值和加和操作。

例4,使用变量实现一个简单的计数器:# -创建一个变量, 初始化为标量 0. 初始化定义初值

state = tf.Variable(0, name="counter")

# 创建一个 op, 其作用是使 state 增加 1

one = tf.constant(1)

new_value = tf.add(state, one)

update = tf.assign(state, new_value)

# 启动图后, 变量必须先经过`初始化` (init) op 初始化,

# 才真正通过Tensorflow的initialize_all_variables对这些变量赋初值

init_op = tf.initialize_all_variables()

# 启动默认图, 运行 op

with tf.Session() as sess:

# 运行 'init' op

sess.run(init_op)

# 打印 'state' 的初始值

# 取回操作的输出内容, 可以在使用 Session 对象的 run() 调用 执行图时,

# 传入一些 tensor, 这些 tensor 会帮助你取回结果.

# 此处只取回了单个节点 state,

# 也可以在运行一次 op 时一起取回多个 tensor:

# result = sess.run([mul, intermed])

print sess.run(state)

# 运行 op, 更新 'state', 并打印 'state'

for _ in range(3):

sess.run(update)

print sess.run(state)

上面的代码定义了一个如下的计算图:

Ok,总结一下,来一个清晰的代码:

过程就是:建图->启动图->运行取值

计算矩阵相乘:import tensorflow as tf

# 建图

matrix1 = tf.constant([[3., 3.]])

matrix2 = tf.constant([[2.],[2.]])

product = tf.matmul(matrix1, matrix2)

# 启动图

sess = tf.Session()

# 取值

result = sess.run(product)

print result

sess.close()

上面的几个代码介绍了基本用法,通过观察,有没有觉得 tf 和 numpy 有点像呢。

TensorFlow和普通的Numpy的对比,来看一下二者之间的区别:

eval()

在 Python 中定义完 a 后,直接打印就可以看到 a。In [37]: a = np.zeros((2,2))

In [39]: print(a)

[[ 0. 0.]

[ 0. 0.]]

但是在 Tensorflow 中需要显式地输出(evaluation,也就是说借助eval()函数)!In [38]: ta = tf.zeros((2,2))

In [40]: print(ta)

Tensor("zeros_1:0", shape=(2, 2), dtype=float32)

In [41]: print(ta.eval())

[[ 0. 0.]

[ 0. 0.]]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3.6.5安装tensorflow_tensorflow(一)windows 10 python3.6安装tensorflow1.4与基本概念解读... 的相关文章

  • qt之QCustomPlot动态更改曲线颜色,点击曲线标题名称

    一 前言 上篇文章介绍了如何调用qt自带的颜色画板 其实目的就是想更改一些颜色 本篇博客介绍更改QCustomPlot的曲线颜色 二 环境 qt5 7 mingw windows8 sqlite3 三 正文 首先在数据库中建好表 一行多列
  • 碳排放混合预测模型(Matlab代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 二氧化碳排放力争于
  • [自然语言处理入门]-NLP中的注意力机制

    本章的主要内容有 注意力机制概述 传统注意力机制 注意力编码机制 1 注意力机制概述 注意力机制简单来说就是 加权求和机制 模块 加权求和模块 神经网络中的一个组件 可以单独使用 但更多地用作为 网络中的一部分 2 传统注意力机制 2 1
  • windows基线检测

    按照Windows基线检查模板检查设置windows安全机制 windows基线检查选项及风险等级 编号 检查选项 风险等级 适用类型 1 系统已安装最新的service pack 2 系统已经安装了最新的安全补丁 本地安全策略检查选项及风
  • java控制台聊天程序

    java控制台聊天程序 发送端 package ip chat import java io BufferedReader import java io InputStreamReader import java net DatagramP
  • Python中的filter()函数

    目录 一 描述 语法 返回值 二 实例 1 过滤出列表中的所有奇数 2 过滤出1 100中平方根是整数的数 一 描述 英文文档 filter function iterable Construct an iterator from thos
  • 01-----tcpdump抓包命令

    一 tcpdump抓包命令 关于tcpdump的抓包命令 非常的多 这里我只记录我平时开发时比较常用的抓包命令 当然后面可能不断的在本篇补上对应的内容 1 tcpdump的命令格式 tcpdump adeflnNOpqStvx c 数量 F
  • 大数据毕业设计 深度学习图像检索算法研究与实现 - python

    文章目录 0 前言 1 课题简介 2 图像检索介绍 1 无监督图像检索 2 有监督图像检索 3 图像检索步骤 4 应用实例 5 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答
  • oh-my-zsh的各种主题展示,你喜欢哪一个?

    pygmalion virtualenv blink mrtazz sonicradish skaro linuxonly gnzh tjkirch 带时间
  • 物联网毕设分享 - stm32单片机酒精浓度酒驾检测系统 - 物联网 嵌入式

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 MQ 3酒精乙醇传感器模块 SIM800C模块 5 软件说明 系统框图 6 部分核心代码 7 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕
  • cityscapes和foggy_cityscapes数据集使用记录

    cityscapes和foggy cityscapes数据集使用记录 cityscapes 数据集介绍 下载数据集 cityscapes转voc格式 foggy cityscapes 下载数据集 foggy cityscapes转voc格式
  • linux drm 架构 基础

    一 简介 DRM 英文全称Digital Rights Management 可以翻译为 数字版权管理 由于数字化信息的特点决定了必须有另一种独特的技术 来加强保护这些数字化的音视频节目内容 文档 电子书籍的版权 该技术就是数字权限管理技术
  • PAT (Basic Level) Practice (中文) B1034 有理数四则运算 (20 分)(C++)(分数四则运算)

    1034 有理数四则运算 20 分 本题要求编写程序 计算 2 个有理数的和 差 积 商 输入格式 输入在一行中按照 a1 b1 a2 b2 的格式给出两个分数形式的有理数 其中分子和分母全是整型范围内的整数 负号只可能出现在分子前 分母不
  • openGL之API学习(一九三)glGenTextures

    生成纹理单元名 单元名不一定是连续的 但是没有使用的 单元名是相对GL TEXTURE0的 对于单元名1 其实是GL TEXTURE0 1 glGenTextures产生的是一个比较小的整数id 纹理单元名 glActiveTexture激
  • 三分钟带你搞懂分布式链路追踪系统原理

    分布式系统为什么需要链路追踪 随着互联网业务快速扩展 软件架构也日益变得复杂 为了适应海量用户高并发请求 系统中越来越多的组件开始走向分布式化 如单体架构拆分为微服务 服务内缓存变为分布式缓存 服务组件通信变为分布式消息 这些组件共同构成了
  • 前端学习——JavaScript原生实现购物车案例

    一 购物车案例 1 1 案例介绍 今天我们来写另外一个购物车案例 说实话对于我来说这个是花了将近三个小时的时间然后才做出来的 里面可能还存在一些我没有发现的问题 但是能完成基本的功能 对于一些基本的需求都是可以完成的 下面照旧是案例实现的g
  • [Python] wxPython 状态栏组件、消息对话框组件 学习总结(原创)

    1 状态栏组件 1 基本介绍 上图 红框框内的就是状态栏 他可以分成若干个区块 比如上者分为了两个区块 并且比例是固定的 创建时可以指定 每个区块都能够显示 信息 一般通过 绑定事件 实时更新 各个区块的内容 因为状态栏本身 组件 所以除了
  • Dubbo与SpringCloud的区别

    首先来看一个表格 Dubbo 和 SpringCloud 对比 Dubbo SpringCloud 服务注册中心 Zookeeper Spring Cloud Netfilx Eureka 服务调用方式 RPC REST API 服务监控
  • Mysql从入门到精通 (innodb 引擎 锁超时查看以及设置)

    1 查看innodb引擎锁超时时间 show variables like innodb lock wait timeout 2 设置锁超时时间 set innodb lock wait timeout 5 3 代码验证 两个窗口同时开启事

随机推荐

  • tensorflow gpu利用率低_TensorFlow 模型优化工具 — float16 量化将模型体积减半

    我们很高兴在模型优化工具包中添加训练后的半精度浮点量化 float16 quantization 此工具套件包含混合量化 hybrid quantization 训练后整形量化 full integer quantization 和剪枝 p
  • 双向长短期记忆网络(Bi-LSTM)

    在开始之前 首先区分下均命名为RNN 新手很容易混淆的两大神经网络 循环神经网络 Recurrent Neural Network RNN 和递归神经网络 Recurssion Neural Network RNN 递归神经网络 RNN 是
  • 跨时钟域处理方法(一)——打拍

    一 说明 处理跨时钟域的数据可以分为单bit数据和多bit数据 而打拍的方法主要常见于处理单bit数据的跨时钟域问题 打拍的本质是通过添加寄存器 对输入的数据进行延拍 其主要目标是消除亚稳态的影响 常见的是打2拍 也就是添加2级寄存器 二
  • 基于STM32单片机驱动HX711的代码分享,仅供参考

    最近在搞一个需要加入称重模块的项目 在调试的时候也是遇到了很够狗血的问题 也参考了别的工程师的设计 所以 闲话少叙 上代码 HX711 Dout PB9 HX711 SCK PB8 include hx711 h uint32 t HX71
  • 字符串转整形数据

    c 语言字符转化为数字的函数有 atof 将字符串转换为双精度浮点型值 atoi 将字符串转换为整型值 atol 将字符串转换为长整型值 strtod 将字符串转换为双精度浮点型值 并报告不能被转换的所有剩余数字 strtol 将字符串转换
  • 竞赛选题 卷积神经网络手写字符识别 - 深度学习

    文章目录 0 前言 1 简介 2 LeNet 5 模型的介绍 2 1 结构解析 2 2 C1层 2 3 S2层 S2层和C3层连接 2 4 F6与C5层 3 写数字识别算法模型的构建 3 1 输入层设计 3 2 激活函数的选取 3 3 卷积
  • 微信小程序api语法及代码实例(入门到精通)

    前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 小程序Api App 全局入口 整个小程序项目中 只允许有一个App入口函数 全局数据 globalData 写在全局的js里 使用this
  • 设计模式之(三)---工厂方法模式

    女娲补天的故事大家都听过吧 这个故事是说 女娲在补了天后 下到凡间一看 哇塞 风景太优美了 天空是湛 蓝的 水是清澈的 空气是清新的 太美丽了 然后就待时间长了就有点寂寞了 没有动物 这些看的到 都是静态的东西呀 怎么办 别忘了是神仙呀 没
  • CTFSHOW web11-14

    目录 web11 web12 web13 web14 web11 其他不重要 直接看代码
  • c语言——矩阵运算器

    话不多说 上代码 include
  • 信号完整性之串扰

    1 前言 当PCB板上走线间距较近 一条走线上传输信号时 会在邻近的走线上引起噪声 这种现象称为串扰 串扰实际上是相邻走线之间的一种能量传递现象 下图显示了这种串扰现象 上方的走线传输信号 无论下方的走线是否有信号在传输 其两端都会产生噪声
  • MySQL避免索引失效

    create table staffs id int primary key auto increment name varchar 24 not null default comment 姓名 age int not null defau
  • 偶然发现的一篇相见很晚的文章:如何学好游戏编程

    今天偶然发现一篇介绍如何学好游戏编程的文章 相见恨晚呀 特转载 转帖地址 http new qzone qq com 79134054 blog 1226580538 如何学好游戏编程 此篇文章献给那些为了游戏编程不怕困难的热血青年 它的神
  • mac,macbook 连接蓝牙耳机播放音乐断断续续

    个人的情况是 mac本连的网线 用的无线鼠标 屋里80多号人都在用笔记本 应该也有好多开着无线的东西 解决方法 mac 或macbook 连接蓝牙耳机播放音乐断断续续的原因 在网上找了好多方法 试了各种方法 用各种命令 都完全没有效果 终于
  • VMware Workstation 17 pro 开机一段时间后,cpu飙高、卡死、、、

    报错截图 临时解决方案 找到VMware workstation 17 pro 安装包 右键 以管理员身份运行 修复 重启即可 永久解决 控制面板 程序 启用或关闭Windows功能 去掉 Windows 虚拟机监控程序平台 虚拟机平台 的
  • 《金融数据分析导论:基于R语言》习题答案(第一章)

    金融数据分析导论 基于R语言 是芝加哥大学的教授Ruey S Tsay所著 李洪成 尚秀芬 郝瑞丽翻译 机械工业出版社出版 是一本学习R语言和金融数据分析的很好的参考书籍 注 这些答案都是本人自己做出的结果 可能有错 仅供参考 发现有错的地
  • openstack用户管理笔记

    1 创建项目 1 1 创建项目 需要确认集群环境是否初始化完毕 实验初始化需要几分钟时间 访问控制节点IP dashboard 如果正常弹出登录页面即初始化完毕 假设控制节点IP为172 20 6 22 则访问地址为 172 20 6 22
  • ElasticStack运维必备技能-集群版

    一 背景介绍 首先 我们为什么要用这个产品呢 生产业务中必然会遇到大量业务日志需要分析 在日志量非常大的场景中 直接使用工具 如cat grep awk 就可以获得想要的信息 效率非常低 在这种情况下 如何快速搜索想要信息 如查询 排序 归
  • 车载操作系统汇总

    文章目录 车载操作系统 一 软件定义汽车 为什么是软件定义汽车 车载OS 承上启下 引领智能汽车发展 车载OS在车载智能计算平台中的位置 车载OS市场空间 车载操作系统 二 车控操作系统 什么是车控操作系统 车控操作系统的特点 车控操作系统
  • python3.6.5安装tensorflow_tensorflow(一)windows 10 python3.6安装tensorflow1.4与基本概念解读...

    一 安装 目前用了tensorflow deeplearning4j两个深度学习框架 tensorflow 之前一直支持到python 3 5 目前以更新到 故安装最新版体验使用 慢慢长征路 安装过程如下 anaconda3 5 PYTHO