TensorFlow基础和入门案例

news2024/11/19 17:32:00

TensorFlow简介

TensorFlow是目前主流深度学习框架之一,其库中几乎包含了所有机器学习和深度学习相关的辅助函数和封装类,官方文档如下图所示。在其框架下做各种神经网络算法的开发可以极大减轻工作量,在入门阶段可以不需要深入理解相关优化算法、分布式的底层细节也可以完成对于深度学习神经网络的搭建、训练、评估、测试和部署步骤。TensorFlow最初是由谷歌脑研究组的研究员和工程师们开发出来的,主要用于进行机器学习和深度神经网络方面的研究,后来逐渐发展成为广泛通用的深度学习主流框架之一。
在这里插入图片描述

TensorFlow主要采用数据流图规划计算流程、进行数值计算,节点表示数学操作,线表示在节点之间相互传递信息的多维数组;记录多维数组信息量的数据为张量.TensorFlow提供了Python、C++和JavaScript等易于快速开发编程语言的接口,并且还配置有TensorBoard可视化工具。TensorFlow具有灵活的架构,支持在多种平台上进行计算,如CPU,GPU,TPU、云服务器和移动设备,具有灵活、快速和适应性广泛的优越性。

数据流图

数据流图是使用节点(Node)和有向线(Edge)来描述的数学计算,又称计算图。在用TensorFlow进行科学计算时,通常先创建一个计算图,然后将数据载入计算图中进行计算。

  1. 节点:计算图中一般用圆圈、椭圆或方框表示,计算图在TensorBoard可视化中可以形象化地显示出来。节点通常用来表示执行的数学操作,数据输入的起点和数据输出的终点也可以表示为节点。
  2. 线: 计算图中一般用箭头表示线,代表节点和节点之间的信息输入、输出和传递关系,其中传递的信息就是可变维度的张量。

张量

张量是计算图中节点之间相互传递数据的表现形式。一维数组、二维数组和N维数组等都可以看做张量,表示操作的输出量。

tf.Tensor(op,value_jndex,dtype)

参数描述
opTensor操作节点
value_index生成Tensor的节点索引
dtypeTensor数据类型

张量的属性

属性描述
Tensor.device计算Tensor的硬件
Tensor.dtypeTensor数据类型
Tensor.graph包含Tensor的计算图
Tensor.nameTensor命名空间
Tensor.opTensor操作节点
Tensor.shapeTensor形状

TensorFlow中张量常见数据类型

数据类型Python API
32位浮点数tf.float32
64位浮点数tf.float64
64位有符号整型tf.int64
32位有符号整型tf.int32
可变长字节数组tf.string
布尔型tf.bool
8位无符号整型tf.unit8

张量在计算图中主要的用途是对中间计算结果的引用和获取数据流图计算结果。在构建深层网络时计算复杂度很大,计算图中包含大量的中间结果,只用张量可以极大地提升代码的可读性。

使用TensorFlow做矩阵计算

用TensorFlow完成矩阵计算,并使用TensorBoard可视化数据流图

步骤一:使用TensorFlow做矩阵计算
新建一个python文件,命名为task4.py,代码如下所示

import tensorflow as tf

A=tf.constant([[1,4,7],[2,5,8],[3,6,9]],name='matrix_A')
B=tf.constant([[2,1,2],[-1,1,4],[3,0,-1]],name='matrix_B')
C=tf.constant([[1,-1,0],[2,2,2],[1,4,5]],name='matrix_C')

node_matmul=tf.matmul(A,B,name='node_matmul')
node_add=tf.add_n([node_matmul,C],name='node_add')

with tf.Session() as sess:
    writer=tf.summary.FileWriter('./log_4',sess.graph)
    Y=sess.run(node_add)
    print(Y)
    writer.close()

代码解析:

  • tf.constart:用于声明一个常量
  • tf.matmul:用于计算矩阵的乘法,还有另一个类似的方法叫做multiply,矩阵乘以矩阵,矩阵乘向量,矩阵乘某个数都可以
  • tf.add_n:用于计算列表元素加法
  • with tf.Session() as sess:创建上下文来执行,当上下文退出的时候自动释放资源
  • tf.summary.FileWriter:用于指定一个文件用来保存图

步骤二:运行程序

在命令行中输入命令——python task4.py ,运行结果如下所示:
在这里插入图片描述
步骤三:使用TensorBoard可视化矩阵计算数据流图
使用TensorBoard显示矩阵计算的数据流图,命令行输入:

 tensorboard --logdir log_4

在浏览器新的便签也输入网址: http://localhost:6006/,即可访问TensorBoard页面。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring拦截器参数及多拦截器执行顺序讲解

1.拦截器中的参数 2.多拦截器执行顺序 如果全部返回true,则按照流程全部执行 如果3返回false,123的preHandler会执行,123的postHandler都不会执行,但是return为true的2和1的after会执行 如果2返回false 12的preHandler会执行 pos…

sql 模糊查询与查询时间范围 起止时间

上代码 <select id"page" resultType"com.sky.entity.Orders">select * from orders<where><if test"number!null and number!">and number like concat(%,#{number},%)</if><if test"phone!null and phone!&q…

选择排序、归并排序、快速排序

1.选择排序 选择排序算法的实现思路有点类似插入排序&#xff0c;也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最小的元素&#xff0c;将其放到已排序区间的末尾。 Java代码实现如下。 ps&#xff1a;选择排序的最好情况时间复杂度、最坏情况和平均情况…

vue子组件监听不到父组件数据变化;子组件获取不到父组件的异步数据

当父子组件嵌套使用时created 和mounted 生命周期的执行顺序是父created -> 子created -> 子mounted -> 父mounted&#xff0c;但是这只是针对同步代码&#xff0c;当生命周期中有异步接口时&#xff0c;那么就会变成父created未执行完 -> 子created -> 子mount…

web安全php基础_魔术常量__FUNCTION__与__METHOD__的区别

PHP 魔术常量 PHP 向它运行的任何脚本提供了大量的预定义常量。 不过很多常量都是由不同的扩展库定义的&#xff0c;只有在加载了这些扩展库时才会出现&#xff0c;或者动态加载后&#xff0c;或者在编译时已经包括进去了。 有八个魔术常量它们的值随着它们在代码中的位置改…

安装Pytorch及配置Pycharm

PyTorch是一个基于Torch的Python开源机器学习库&#xff0c;用于自然语言处理等应用程序。它主要由Facebookd的人工智能小组开发&#xff0c;不仅能够 实现强大的GPU加速&#xff0c;同时还支持动态神经网络&#xff0c;这一点是现在很多主流框架如TensorFlow都不支持的。 本文…

Service Computing Frontier Technology Experiment

任务说明 实验算法 空间数据索引RTree&#xff08;R树&#xff09;完全解析及Java实现 - 佳佳牛 - 博客园 (cnblogs.com) SFS 打开堆文件 t相当于一个指针 当指针指到不为空的时候 如果窗口未被占用那么 如果窗口是满的话那么代表完成 如果窗口没有满的话 把他加到窗口上&a…

k8s 第一篇 基础知识

一 k8s 1.1 概念 k8s 是一个能让应用部署到容器中&#xff0c;实现自动部署和管理更加高效 自能化的平台。 也就是说通过k8s&#xff0c;能够进行应用的自动化部署和扩容。 1.2 集群的架构流程 1.3 k8s的核心概念 1.4 k8s 集群规划 从第6集开始看

【分立元件】理解电阻

如果强行将某电压加在电子器件上&#xff0c;那么器件上被迫流过的电流是不可控的&#xff0c;电流具体是多少&#xff0c;是由器件本身的性质决定的。 比如同样的电压加载在导体和绝缘体两端&#xff0c;那么一般流过导体的电流会是大于流过绝缘体的。但要是超高电压下绝缘体…

单点登录SSO==MAXKEY

1-下载安装包安装启动 2-打开教程&#xff0c;里面说的很详细了 3- 测试 不想从这点进去也可以直接匿名打开个窗口直接访问 http://oauth.demo.maxkey.top:9521/demo-oauth/oauth20index.jsp 也会跳转到登录页面&#xff0c;输入账号密码后登录成功 乱输密码的话登录不成功还…

【算法设计与分析】素数测试问题——设计一个拉斯维加斯算法,对于给定的正整数,判断其是否为素数。

目录 一、问题描述二、分析三、运行结果四、代码 一、问题描述 试设计一个素数测试的偏真蒙特卡罗算法&#xff0c;对于测试的整数n&#xff0c;所述算法是一个关于logn的多项式时间算法。结合教材中素数测试的偏假蒙特卡罗算法&#xff0c;设计一个素数测试的拉斯维加斯算法。…

盛最多水的容器(力扣)双指针 JAVA

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。 输入&…

Tomcat安装配置及其出错的解决方法

文章目录 一、安装二、进行配置三、解决问题四、验证 一、安装 官网链接: https://tomcat.apache.org/ 1.选择 A r c h i v e s \color{red}{Archives} Archives 2.选择 T o m c a t \color{red}{Tomcat} Tomcat版本 3.在对应的版本中选择相对应的小版本 点击 b i n \color…

海盗船DDR5版本号VER命名规则

从华硕、技嘉、微星的内存QVL中可总结出如下规律 海盗船DDR5版本号命名规则 第一位数字 颗粒厂商 第二位数字 对应产品类型 第三位数字 DIE数 3 美光 01 A 4 三星 43 传统内存 02 B 5 海力士 53 非传统内存 03 C 04 D 05 E 8 …

JAVA线程池分析实现

1、定义线程池 /*** 使用给定的初始参数创建新的 ThreadPoolExecutor对象&#xff0c;就创建了一个线程池* param corePoolSize - 要保留在池中的线程数&#xff0c;即使它们处于空闲状态&#xff0c;若果allowCoreThreadTimeOut设置为ture&#xff0c;那么核心线程在keepAliv…

整理——xilinx FPGA 在线升级

一&#xff1a;xilinx FPGA 在线升级方案&#xff1a;&#xff08;系统搭建&#xff1a;MicroBlaze软核处理器&#xff0c;uart控制器&#xff0c;Axi-lite-user用户通信接口&#xff0c;MIG DDR3控制器&#xff0c;中断控制器等&#xff0c;以太网控制器&#xff09; 1.跑一个…

C#开发的OpenRA游戏之建造物品的窗口10

C#开发的OpenRA游戏之建造物品的窗口10 前面已经分析完成建造物品的过程,从物品进入队列,直到物品按时间进行生产完成。那么生产完成之后,又是怎么样放置到游戏的地图里面的呢?本文就来分析这个问题。 前面可以看到,当物品建造完成时,会在右边的面板上显示建造完成: 在…

类 模板 已经声明为非类 模板

类 模板 已经声明为非类 模板 解决方案 原因是在当前包下&#xff0c;已经定义了AA类 解决方案 更改模板类AA的类名

爬虫入门05——requests中的post请求

爬虫入门05——requests中的post请求 以百度翻译为例&#xff0c;我们如何输入内容后获取翻译后的结果呢 打开百度翻译的界面 右键单击后选择检查 点击网络 在翻译的框内输入内容&#xff0c;就以输入“你好”为例&#xff0c; 点击sug&#xff0c;点击标头&#xff0c…

Linux 文件系统

文章目录 一、设备专用文件&#xff08;设备文件&#xff09;设备 ID 二、磁盘与分区1. 磁盘驱动器2. 磁盘分区 三、文件系统四、i-nodeext2 中的 i-node 与数据块指针 五、虚拟文件系统&#xff08;VFS&#xff09;六、日志文件系统七、单根目录层级与挂载点 一、设备专用文件…