【深度学习笔记】TensorFlow 基础

在 TensorFlow 2.0 及之后的版本中,默认采用 Eager Execution 的方式,不再使用 1.0 版本的 Session 创建会话。Eager Execution 使用更自然地方式组织代码,无需构建计算图,可以立即进行数学计算,简化了代码调试的过程。本文主要介绍 TensorFlow 的基本用法,通过构建一个简单损失函数,介绍 TensorFlow 优化损失函数的过程。

目录

1 tf.Tensor

2 tf.Variable

3 tf.GradientTape


TensorFlow 是一个用于机器学习的端到端平台。它支持以下内容:

  • 基于多维数组的数值计算(类似于 NumPy)
  • GPU 和分布式处理
  • 自动微分
  • 模型构建、训练和导出

1 tf.Tensor


        TensorFlow 用 tf.Tensor 对象处理多维数组(或张量),以下是一个 2 维张量例子:

import tensorflow as tf
x = tf.constant([[1., 2., 3.],[4., 5., 6.]])
print(x)

tf.Tensor(
[[1. 2. 3.]
 [4. 5. 6.]], shape=(2, 3), dtype=float32)

tf.Tensor 对象最重要的属性是 shape 与 dtype:

  • Tensor.shape  返回张量每个维度的大小
  • Tensor.dtype   返回张量中元素的数据类型

print(x.shape)

(2, 3)

print(x.dtype)

<dtype: 'float32'>

        TensorFlow 实现了张量的标准数学运算,同时也包括为机器学习定制的运算。以下是一些示例:

x + x
5 * x
tf.transpose(x)
tf.nn.softmax(x, axis=-1)
tf.reduce_sum(x)

2 tf.Variable

        在 TensorFlow 中,模型的权重用 tf.Variable 对象存储,称为变量。

import tensorflow as tfx = tf.Variable([0., 0., 0.])
x.assign([1, 2, 3])

<tf.Variable 'UnreadVariable' shape=(3,) dtype=float32, 
numpy=array([1., 2., 3.], dtype=float32)>

        tf.Variable 对象的数值可以改变,在 TensorFlow 2.0 中,不再使用 Session 启动计算,变量可以直接算出结果。

x.assign_add([1, 1, 1,])

<tf.Variable 'UnreadVariable' shape=(3,) dtype=float32, 
numpy=array([2., 3., 4.], dtype=float32)>

x.assign_sub([1, 1, 1])

<tf.Variable 'UnreadVariable' shape=(3,) dtype=float32, 
numpy=array([1., 2., 3.], dtype=float32)>

3 tf.GradientTape

        梯度下降法与相关算法是现在机器学习的基础。TensorFLow 实现了自动微分来计算梯度,通常用于计算机器学习模型的损失函数的梯度。

        TensorFlow 2.0 提供了 tf.GradientTape 对象,可以理解为“梯度流”,顾名思义,tf.GradientTape 是用来计算梯度用的。

        以下是一个简单的示例:

import tensorflow as tfdef f(x):return x**2 + 2*x - 5x = tf.Variable(1.0)with tf.GradientTape() as tape:y = f(x)
g_x = tape.gradient(y, x) # 计算 y 在 x = 1.0 处的梯度
print(g_x)

4.0

最后,构建一个简单损失函数,并使用 TensorFlow 计算最小值。

import tensorflow as tfdef loss(x):return x**2 - 10*x + 25x = tf.Variable(1.0) # 随机初始值losses = [] # 记录损失函数值
for i in range(100):with tf.GradientTape() as tape:one_loss = loss(x)lossed.append(one_loss)grad = tape.gradient(one_loss, x)x.assign_sub(0.1 * grad) # 执行一次梯度下降法print("The mininum of loss function is: ")
tf.print(x)

The mininum of loss function is: 

4.99999905

# 可视化优化过程
import matplotlib
from matplotlib import pyplot as pltmatplotlib.rcParams['figure.figsize'] = [8, 5]plt.figure()
plt.plot(losses)
plt.title('Loss vs training iterations')
plt.xlabel('iterations')
plt.ylabel('loss')

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

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

相关文章

微服务——操作索引库+文档操作+RestClient操作索引库和文档(java程序)

索引库操作 mapping属性 mapping是对文档的约束&#xff0c;常见约束属性包括: 创建索引库 #创建索引库 PUT /heima {"mappings": {"properties": {"info":{"type": "text","analyzer": "ik_smart"},…

Redis_概述

1.redis概述 1.1 简介 截止到2021年12月 数据库排名https://db-engines.com/en/ranking redis(Remote Dictionary Server) 一个开源的key-value存储系统它支持存储的Value类型&#xff1a;包括String(字符串),list(链表),set(集合),zset(sorted set 有序集合),hash(哈希类型…

记录第一篇被”华为开发者联盟鸿蒙专区 “收录的文章

记录第一篇被”华为开发者联盟鸿蒙专区 “社区收录的文章。 坚持写作的动力是什么&#xff1f; 是记录、分享&#xff0c;以及更好的思考 。

【VUE】项目本地开启https访问模式(vite4)

在实际开发中&#xff0c;有时候需要项目以https形式进行页面访问/调试&#xff0c;下面介绍下非vue-cli创建的vue项目如何开启https 环境 vue: ^3.2.47vite: ^4.1.4 根据官方文档&#xff1a;开发服务器选项 | Vite 官方中文文档 ps&#xff1a;首次操作&#xff0c;不要被类…

目标检测YOLOv3基于DarkNet53模型测试-笔记

目标检测YOLOv3基于DarkNet53模型测试-笔记 预测和试测结果&#xff1a; 预测代码如下所示&#xff1a; testInsects.py #YOLOv3网模型测试-单图片文件测试并显示测试结果 import time import os import paddle import numpy as np import cv2 import random from PIL impor…

ThreadLocal的内存泄漏是怎么发生的

前言 在分析ThreadLocal导致的内存泄露前&#xff0c;需要普及了解一下内存泄露、强引用与弱引用以及GC回收机制&#xff0c;这样才能更好的分析为什么ThreadLocal会导致内存泄露呢&#xff1f;更重要的是知道该如何避免这样情况发生&#xff0c;增强系统的健壮性。 内存泄露 …

chatGPT小白快速入门培训课程-001

一、前言 本文是《chatGPT小白快速入门培训课程》的第001篇文章&#xff0c;全部内容采用chatGPT和chatGPT开源平替软件生成。完整内容大纲详见&#xff1a;《chatGPT小白快速入门课程大纲》。 本系列文章&#xff0c;参与&#xff1a; AIGC征文活动 #AIGC技术创作内容征文# …

win10强制卸载奇安信天擎

1、win r 打开运行 2、输入msconfig进入系统配置面板 3、点击引导&#xff0c;修改安全引导配置项 4、重启系统&#xff08;桌面会变成纯黑背景&#xff0c;符合预期&#xff0c;莫紧张&#xff09; 5、删除安装的文件夹 若是安装天擎时选择的自定义安装&#xff0c;则配置…

基于Selenium技术方案的爬取界面内容实践

1. 定位页面&#xff08;多窗口切换&#xff09; WebDriver提供了处理多个窗口的能力&#xff0c;这是通过使用“WebDriver.switchTo.window()”方法来切换到已知名称的窗口来实现的。如果名称未知&#xff0c;您可以使用“WebDriver.getWindowHandles()”获取已知窗口列表。您…

ffmpeg源码编译成功,但是引用生成的静态库(.a)报错,报错位置在xxx_list.c,报错信息为某变量未定义

背景&#xff1a;本文是对上一个文章的补充&#xff0c;在源码编译之前&#xff0c;项目是有完整的ffmpeg编译脚本的&#xff0c;只不过新增了断点调试ffmpeg&#xff0c;所以产生的上面的文章&#xff0c;也就是说&#xff0c;我在用make编译成功后&#xff0c;再去做的源码编…

【立创EDA】【1】原理图绘制常用操作

总线使用 作用&#xff1a;总线可以方便多个元件的连接总线必须配合总线分支使用原理图上的总线只是视觉上的效果&#xff0c;欲使网络完整&#xff0c;还需添加网络标签&#xff08;如下图&#xff0c;未添加网络标签时&#xff0c;即使总线连接完成&#xff0c;网络依旧不完…

从零到精通:学习这些R语言必学包成为数据分析高手!

一、操作数据 ❝ tidyverse ❞ tidyverse是一个强大的R语言数据分析工具集&#xff0c;包含了多个核心包。其中包括ggplot2用于数据可视化、dplyr用于数据处理和转换、tidyr用于数据整理和重塑、readr用于数据导入和读取、purrr用于函数式编程、stringr用于字符串处理等。 ❝ d…

JavaScript、TypeScript、ES5、ES6之间的联系和区别

ECMAScript&#xff1a; 一个由 ECMA International 进行标准化&#xff0c;TC39 委员会进行监督的语言。通常用于指代标准本身。JavaScript&#xff1a; ECMAScript 标准的各种实现的最常用称呼。这个术语并不局限于某个特定版本的 ECMAScript 规范&#xff0c;并且可能被用于…

5. 服务发现

当主机较少时&#xff0c;在抓取配置中手动列出它们的IP地址和端口是常见的做法&#xff0c;但不适用于较大规模的集群。尤其不适用使用容器和基于云的实例的动态集群&#xff0c;这些实例经常会变化、创建或销毁的情况。 Prometheus通过使用服务发现解决了这个问题&#xff1…

(4)各个属性角色分析显示-4

将折线图、数据集、散点图集合在一个html文件中&#xff1a; &#xff08;1&#xff09;将折线图、数据集、散点图设置为函数a()、b()、c()&#xff0c; &#xff08;2&#xff09;再调用page.add()函数&#xff0c;将三个图片组合在一起 &#xff08;3&#xff09;运行page.…

Ajax 笔记(二)—— Ajax 案例

笔记目录 2. Ajax 综合案例2.1 案例一-图书管理2.1.1 渲染列表2.1.2 新增图书2.1.3 删除图书2.1.4 编辑图书 2.2 案例二-背景图的上传和更换2.2.1 上传2.2.2 更换 2.3 案例三-个人信息设置2.3.1 信息渲染2.3.2 头像修改2.2.3 信息修改2.3.4 提示框 Ajax 笔记&#xff1a; Ajax…

c#在设计时调试自定义 Windows 窗体控件

private string demoStringValue null; [Browsable(true)] public string DemoString {get{return this.demoStringValue;}set{demoStringValue value;} } 参考链接 在设计时调试自定义控件 - Windows Forms .NET Framework | Microsoft Learnhttps://learn.microsoft.com/z…

zookeeper和kafka

目录 一、zookeeper理论 1.1、zookeeper定义 1.2、zookeeper工作机制 1.3、zookeeper特点 1.4、zookeeper的数据结构 1.5、zookeeper应用场景 1.6、zookeeper的选举机制 二、部署Zookeeper 集群 2.1、环境准备 2.2、安装 Zookeeper 2.3、修改配置文件 2.4、配置…

40G光模块在高速网络中的关键角色

40G光模块在高速网络中扮演着关键的角色。它是用于传输数据的光纤通信设备&#xff0c;具备高速数据传输能力&#xff0c;广泛应用于数据中心、电信运营商、企业网络等领域。本文我们来看看40G光模块在高速网络中是如何发挥它的作用的&#xff01; 一、认识40G光模块 为实现4…

Mr. Cappuccino的第59杯咖啡——简单手写SpringIOC框架

简单手写SpringIOC框架 环境搭建基于XML方式项目结构项目代码运行结果 基于注解方式项目结构项目代码运行结果 简单手写SpringIOC框架核心原理基于XML方式原理项目结构项目代码运行结果 基于注解方式原理项目结构项目代码运行结果 环境搭建 基于XML方式 项目结构 项目代码 p…