当前位置: 首页 > article >正文

深度学习入门- 梯度(Gradient)(三)

一. 手算梯度

1.计算下列函数的梯度,并写明过程。

       理论依据是前面两文学习过的:

       链式法则:复合函数的导数可以用构成复合函数的各个函数的导数的乘积表示。

       偏导数是多元函数时:将某一个变量定为目标变量,并将其他变量固定为某个值。

       根据上述理论,我们先看下手写数学计算过程:

  • step1:求偏导数

     F(x1,x2)对x1的偏导数为:

      F(x1,x2)对x2的偏导数为:

  • step2:在点(2,3)处求值

     将x1=2,x2=3带入上式:

  • step3:形成梯度向量

      该函数在点(2,3)处的梯度向量为:

故:以上二元函数在点(2,3)处的梯度向量为(108,144)。

二.绘制梯度3D图

      从不同的视角来看梯度:

      view(2) 设置默认二维视图 :

       view(3) 设置默认三维视图:

       附上matlab脚本:

[X1, X2] = meshgrid(-5:0.1:5, -5:0.1:5);

F = (3*X1 + 4*X2).^2;

[GX, GY] = gradient(F);

figure;

surf(X1, X2, F);

hold on;

% 为了绘制梯度场箭头,我们需要遍历网格点

% 但由于梯度箭头可能会非常密集且难以看清,我们可以选择性地绘制一些箭头

step = 5; % 设置步长

for i = 1:step:size(X1,1)

    for j = 1:step:size(X1,2)

        % 提取当前网格点的坐标和梯度值

        x = X1(i,j);

        y = X2(i,j);

        z = F(i,j);

        ux = GX(i,j);

        uy = GY(i,j); 

        % 归一化梯度向量(可选步骤,用于控制箭头长度)

        norm_factor = sqrt(ux^2 + uy^2);

        if norm_factor ~= 0

            ux = ux / norm_factor;

            uy = uy / norm_factor;

        end

        % 设置箭头长度(可以根据需要调整)

        arrow_length = 0.5;

        % 绘制梯度箭头

        quiver3(x, y, z, arrow_length * ux, arrow_length * uy, 0, 'r', 'LineWidth', 0.5);

    end

end

xlabel('x1');

ylabel('x2');

zlabel('f(x1, x2)');

title('3D Plot of f(x1, x2) = (3x1 + 4x2)^2 and its Gradient Field');

grid on;

axis tight; 

view(3); % 设置视角

hold off;

本文仅为个人学习使用所写。


http://www.kler.cn/a/411863.html

相关文章:

  • 【VUE3】VUE组合式(响应式)API常见语法
  • HTTP头字段X-Forwarded-For,Proxy-Client-IP,WL-Proxy-Client-IP
  • 嵌入式linux系统中图像处理基本方法
  • ESP32学习笔记_FreeRTOS(3)——SoftwareTimer
  • 使用ENSP实现默认路由
  • ubuntu中使用ffmpeg和nginx推流rtmp视频
  • RabbitMQ 安装延迟队列插件 rabbitmq_delayed_message_exchange
  • 华为Mate 70系列发布,揭示AI+消费电子产业化新阶段
  • scrapy框架学习
  • laravel中队列使用
  • 基于FPGA的信号DM编解码实现,包含testbench和matlab对比仿真
  • linux运行vue编译后的项目
  • ensp静态路由实验
  • CTF-RE 从0到N:c语言是如何利用逻辑运算符拆分变量和合并的
  • LeetCode数组题
  • C# Http Post 长连接和短连接请求
  • 【jvm】对象的内存布局
  • 【软件入门】Git快速入门
  • 《黑神话:悟空》游戏辅助修改器工具下载指南与操作方法详解
  • 4.6 JMeter HTTP信息头管理器
  • git(Linux)
  • C++:多态的原理
  • VMware ubuntu创建共享文件夹与Windows互传文件
  • Unity中的简易TCP服务器/客户端
  • macos 14.0 Monoma 修改顶部菜单栏颜色
  • Leetcode53. 最大子数组和(HOT100)