tensorflow1基础函数学习

学习准备:

所需的库:

tensorflow 1.12.0
numpy 1.19.5

基本初始化函数

1.1 理解张量

tensor:

多维数组(列表), 阶:张量的维数

维数名字栗子
0标量s = 1, 2, 3
1向量v = [1, 2, 3]
2矩阵m = [[1, 2], [3, 4]]
n张量t = [[[[(这里有n个方括号)…

张量可以是0-n阶的数组(列表)

张量数据类型:

tf.int, tf.float: 浮点型

-tf.int 32, tf.float 32, tf.float 64

tf.bool: 布尔型

  • tf.constant([True, False])

tf.string: 字符串型

  • tf.string(“hello, world”)
with tf.Session() as sess:a = np.arange(0, 5)b = tf.convert_to_tensor(a, dtype=tf.int64)b_value = sess.run(b)print(a, b)

输出结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5r0iH7c8-1721236679529)(https://i-blog.csdnimg.cn/direct/2344f400f6d64af1bc29eb68c2c99b1a.png)]

  • 可以看到,b_value = sess.run(b)之后,b_value成了numpy格式数组。

输出结果:

[0 1 2 3 4] [0 1 2 3 4]

1.2 创建一个tensor

函数:

tf.zeros(维度),

tf.ones(维度),

tf.fill(维度, 指定值)

代码:

with tf.Session() as sess:a = tf.zeros([1, 2])b = tf.ones([1, 2])c = tf.fill([1, 2], 6)a_value = sess.run(a)b_value = sess.run(b)c_value = sess.run(c)print("a:", a_value, "b:", b_value, "c:", c_value)

运行结果:

a: [[0. 0.]] b: [[1. 1.]] c: [[6 6]]

函数:

正态分布:
tf.random.normal(维度, mean=均值, stddev=标准差)

截断式正态分布:
tf.random.truncated_normal(维度, mean=均值, stddev=标准差)

  • tf.random.truncated_normal随机生成的数据取值在均值加减两个标准差范围内

代码:

with tf.Session() as sess:a = tf.random.normal([1, 3], mean=4, stddev=2)b = tf.random.truncated_normal([1, 3], mean=4, stddev=2)a_value = sess.run(a)b_value = sess.run(b)print("a:", a_value, "b:", b_value)

输出结果:

a: [[2.6766534 3.4962902 4.4655743]] b: [[5.353275   6.081551   0.55957913]]

函数:
均匀分布随机数
tf.random.uniform(维度, minval=最小值, maxval=最大值)

代码:

with tf.Session() as sess:  # 均匀分布随机数a = tf.random.uniform([1, 2], minval=0, maxval=1)a_value = sess.run(a)print("a:", a_value)

输出结果:

a: [[0.94062424 0.09171367]]

类型转换与常见函数1

2.1 强制类型转换

tf.cast(张量名, dtype=数据类型)

2.2计算张量维度上元素的最小值或最大值

tf.reduce_min(张量名)
tf.reduce_max(张量名)

  • 栗子:
with tf.Session() as sess:x1 = tf.constant([1., 2., 3.], dtype=tf.float64)x2 = tf.cast(x1, tf.int32)sess.run(x1)sess.run(x2)print(x1)print(x2)print(sess.run(tf.reduce_min(x2)), sess.run(tf.reduce_max(x2)))

输出结果:

Tensor("Const:0", shape=(3,), dtype=float64)
Tensor("Cast:0", shape=(3,), dtype=int32)
1 3

2.3理解axis:

二维张量或数组中,可以通过调整axis等于0或1来控制执行维度

axis = 0,对列进行操作

axis = 1,对行进行操作

不指定axis,则所有元素参与运算

2.4 理解tf.Variable

这个函数将变量标记为可训练的,被标记的变量会在反向传播中标记自己的梯度信息

神经网络训练中,常用这个函数标记待训练的参数

with tf.Session() as sess:w = tf.Variable([[2, 3], [1, 4]])b = tf.Variable(tf.random.normal([2, 2], mean=0, stddev=1))print(w, b)init = tf.global_variables_initializer()sess.run(init)w_value = sess.run(w)b_value = sess.run(b)print(w_value, b_value)

输出结果:

<tf.Variable 'Variable:0' shape=(2, 2) dtype=int32_ref> <tf.Variable 'Variable_1:0' shape=(2, 2) dtype=float32_ref>[[2 3][1 4]] 
[[ 1.2650353   0.49283144][ 0.13539286 -1.2500311 ]]

注意:

print(w, b) 打印的是变量 w 和 b 的 TensorFlow 对象的字符串表示, 而不是它们的值。
这是因为在 TensorFlow 1.x 中你需要先初始化所有变量,然后才能获取它们的值。

init = tf.global_variables_initializer()
sess.run(init)
这个操作就是初始化所有变量,
然后再用w_value = sess.run(w)来获取变量w的值

常用数学运算函数

3.1 四则运算

要求:两个张量维度相同

张量中对应元素进行四则运算

tf.add
tf.substract
tf.multiply
tf.divide
  • 栗子:
with tf.Session() as sess:x = tf.constant([[1, 2]])y = tf.constant([[3, 4]])a = tf.add(x, y)b = tf.subtract(x, y)c = tf.multiply(x, y)d = tf.divide(x, y)a = sess.run(a)b = sess.run(b)c = sess.run(c)d = sess.run(d)print(a, b, c, d)

输出:

[[4 6]] 
[[-2 -2]] 
[[3 8]] 
[[0.33333333 0.5       ]]

3.2 平方、次方、开方

函数:

tf.square
tf.pow
tf.sqrt

代码:

with tf.Session() as sess:  # 平方,次方与开方x = tf.constant([[4, 9], [1, 2]], dtype=float)pow = tf.pow(x, 3)square = tf.square(x)sqrt = tf.sqrt(x)pow = sess.run(pow)square = sess.run(square)sqrt = sess.run(sqrt)print(pow)print(square)print(sqrt)

输出结果:

[[ 64. 729.][  1.   8.]]
[[16. 81.][ 1.  4.]]
[[2.        3.       ][1.        1.4142135]]

3.3 矩阵乘法

函数:

tf.matmul

代码:

with tf.Session() as sess:  # 矩阵乘法x = tf.constant([[4, 9], [1, 2]], dtype=float)y = tf.constant([[4], [1]], dtype=float)z = tf.matmul(x, y)z_value = sess.run(z)print(z_value)

输出结果:

[[25.][ 6.]]

梯度计算与常见函数2

4.1 梯度计算

在 TensorFlow 1.x 中,梯度计算通常是通过 tf.gradients 函数来实现的

梯度计算代码:

import tensorflow as tfw = tf.Variable([3.0, 5.0])  # 变量
loss = tf.pow(w, 2) * 2  # 函数
grad = tf.gradients(loss, w)  # 算梯度
init = tf.global_variables_initializer()  # 初始化with tf.Session() as sess:sess.run(init)print(sess.run(grad))

输出结果:

[array([12., 20.], dtype=float32)]

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

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

相关文章

Vue3 + uni-app 微信小程序:仿知乎日报详情页设计及实现

引言 在移动互联网时代&#xff0c;信息的获取变得越来越便捷&#xff0c;而知乎日报作为一款高质量内容聚合平台&#xff0c;深受广大用户喜爱。本文将详细介绍如何利用Vue 3框架结合微信小程序的特性&#xff0c;设计并实现一个功能完备、界面美观的知乎日报详情页。我们将从…

1. 个人谈心 ——【如何学习编程及合理安排休息时间】

&#x1f4d6; 声明 ! ! ! 此文章仅仅属于个人思想&#xff0c;如有不满或者意见不相同&#xff0c;可以在评论区讨论留言&#xff0c;非常感谢支持&#xff01;&#xff01;&#xff01; &#x1f495;个人主页&#xff1a;三亿老奶奶心中的梦 &#x1f4d8;收录专栏&#xff…

github上的工程如何下载子模块.gitmodules如何下载指定的模块download submodules开源项目子模块下载externals

github上的工程如何下载子模块.gitmodules如何下载指定的模块download submodules 说明(废话)解决方案无法执行下载子模块无法下载子项目 说明(废话) 今天在编译一个开源库时&#xff0c;该开源库依赖其他项目&#xff0c;并且项目还挺多的&#xff0c;所以有此解决方案 在编…

Redis 延迟队列

Redis 延迟队列 1. 什么是延迟队列 延迟队列是一种特殊的队列&#xff0c;允许元素在特定的延迟时间之后才被消费。在一些场景中&#xff0c;如任务调度、订单超时处理、消息重试等&#xff0c;延迟队列是非常有用的。 2. Redis 实现延迟队列的原理 Redis 提供了一些数据结…

使用el-tree 处理权限树父节点半选和子节点选中获取,及回显父节点不覆盖所以子节点处理

1 获取 父子节点 key 当前 key id 设置el-tree <el-treev-if"isShowTree"ref"treeRef2"style"max-width: 260px":data"assistantListTree"show-checkbox:default-expand-all"isExpandAll"node-key"id":chec…

收银系统源码-商城下单,门店接单

随着新零售时代的不断进步&#xff0c;线下线上一体化的收银系统&#xff0c;被很多门店越来越重视。用户在线上商城下单后&#xff0c;门店如何接单呢&#xff0c;如何处理订单呢&#xff1f; 1.收银系统开发语言 核心开发语言: PHP、HTML5、Dart后台接口: PHP7.3后合管理网…

STM32全栈嵌入式人脸识别考勤系统:融合OpenCV、Qt和SQLite的解决方案

1. 项目概述 本项目旨在设计并实现一个基于STM32的全栈人脸识别考勤系统。该系统结合了嵌入式开发、计算机视觉和数据库技术&#xff0c;实现了自动人脸检测、识别和考勤记录功能。 主要特点: 使用STM32F4系列微控制器作为主控制器采用OpenCV进行人脸检测和识别Qt开发跨平台…

c# excel转pdf

前提条件&#xff1a; 电脑安装了&#xff1a;Microsoft.Office。如没有安装&#xff0c;则不可以调用此方法。 public string ExceltoPdfs(string excelpath, string pdfpath){try{Microsoft.Office.Interop.Excel.Application app new Microsoft.Office.Interop.Excel.App…

LVS+Nginx高可用集群---keepalived原理与实战

1.高可用集群架构keepalived双机主备原理 高可用&#xff1a;(HA) 部署nginx存在两台nginx。当主节点的nginx宕机停止服务的时候&#xff0c;nginx备用机起到跟nginx(主) keepalived的概念&#xff1a;解决单点故障&#xff1b;组件免费&#xff1b;可以实现高可用HA机制&…

封装poi操作excel超实用的工具类

适用poi版本&#xff1a;5.2.2 1.行索引获取Row对象 可能sheet页对象没有创建这一行&#xff0c;可能为空&#xff0c;为空时先创建Row再返回 public static Row safeRow(Sheet sheet,int i){Row row sheet.getRow(i);if(row null){row sheet.createRow(i);}return row;} …

【音视频 | HTTP协议】HTTP协议详细介绍(HTTP方法、报文格式、报文头部字段、状态码)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

git实现多人协作开发同一个项目

Git 是一个非常流行的分布式版本控制系统&#xff0c;用于管理代码版本。在多人协作开发同一个项目时&#xff0c;Git 提供了一系列功能和工作流来帮助团队有效地协同工作。 1. 初始化 Git 仓库 首先&#xff0c;确保你的项目目录已经初始化为一个 Git 仓库。如果没有&#x…

推出全新的ZL3079x、ZL3069x、ZL3066x同步器,优化用于5G运输和无线基础设施设备

一、单通道、双通道和三通道IEEE1588/SyncE网络同步器 ZL3079x提供1个、2个和三个独立的组合硬件和软件平台定时通道&#xff0c;包括IEEE 1588-2008精确时间协议栈和同步算法。该设备使用miTimePLL定时技术&#xff0c;为5G传输和无线基础设施设备提供新的改进功能。该器件非…

正则表达式在Python中的高级应用:从HTML中提取数据

正则表达式在Python中的高级应用&#xff1a;从HTML中提取数据 作为一名资深的Python程序员&#xff0c;我深知正则表达式在文本处理中的重要性。尤其是在处理HTML文档时&#xff0c;正则表达式可以成为我们提取数据的强大工具。在本文中&#xff0c;我将通过一个实际的例子&a…

低代码前端框架Amis全面教程

什么是Amis&#xff1f; 1.1 Amis的基本概念 Amis是一个基于JSON配置的前端低代码框架&#xff0c;由百度开源。它允许开发者通过简单的JSON配置文件来生成复杂的后台管理页面&#xff0c;从而大大减少了前端开发的工作量。Amis的核心理念是通过配置而非编码来实现页面的构建…

阿里云ACP云计算高级攻城狮通用知识

&#x1f525;概述 阿里云云计算高级工程师ACP认证是面向使用阿里云云计算产品的架构、开发、运维类人员的专业技术认证&#xff0c;主要考核考生利用阿里云云计算技术服务体系设计稳定、安全、高性能、易扩展、低成本的企业云计算架构的能力。 前提&#xff1a;在写适用人群…

Spring后端框架复习总结

之前写的博客太杂,最近想把后端框架的知识点再系统的过一遍,主要是Spring Boot和Mybatis相关,带着自己的理解使用简短的话把一些问题总结一下,尤其是开发中和面试中的高频问题,基础知识点可以参考之前写java后端专栏,这篇不再赘述。 目录 Spring什么是AOP?底层原理?事务…

word的进阶

Word的基本操作 这里主要用到的软件是WPS软件。 一、创建一个文档 第一种&#xff1a;快捷键&#xff1a;ctrln第二种&#xff1a;通过界面鼠标点击 二、设置文档背景 更换过的背景如下&#xff1a; 三、章节、目录导航的设置 四、插入目录页 五、对历史文档进行管理 六、…

大数减法c++

这里写目录标题 key key 检查减数和被减数的大小&#xff0c;大的放前&#xff0c;小的放后确定结果是正数&#xff0c;还是负数&#xff0c;即符号位从低位开始减如果a[i]<b[i]&#xff0c;则向高位借1当10&#xff0c;a[i1]–;a[i]10 #include <iostream> #include…

Java_MyBatisPlus

MyBatisPlus属于是MyBatis的拓展&#xff0c;不影响原MyBatis框架下的代码运行&#xff0c;并对MyBatis框架进行拓展及优化。 使用步骤&#xff1a; 注意&#xff1a;继承BaseMapper时要填写泛型为要操作的实体类。 基本原理&#xff1a; MyBatisPlus通过扫描实体类&#xff…