首页 > 其他分享 >《动手学深度学习》学习笔记4

《动手学深度学习》学习笔记4

时间:2024-03-22 09:31:48浏览次数:12  
标签:None set axes 笔记 学习 动手 len legend numerical

求导数、画图代码

导入包

import matplotlib_inline
# jupyter notebook用法
# %matplotlib inline
import numpy as np
# 安装命令:pip install IPython
from IPython import display
from d2l import torch as d2l
import matplotlib.pyplot as plt

求导数代码

# 导数
# 定义函数
def f(x):
    return 3 * x ** 2 - 4 * x


# 极限法求导数函数
def numerical_lim(f, x, h):
    return ((f(x + h) - f(x)) / h)


# 极限求导数
h = 0.1
for i in range(5):
    print(f'h = {h:.5f},numerical limit = {numerical_lim(f, 1, h):.5f}')
    h *= 0.1

运行结果

h = 0.10000,numerical limit = 2.30000
h = 0.01000,numerical limit = 2.03000
h = 0.00100,numerical limit = 2.00300
h = 0.00010,numerical limit = 2.00030
h = 0.00001,numerical limit = 2.00003

画图代码

def use_svg_display():
    """使用svg格式显示绘图"""
    # 这是旧版python支持的用法,新版不支持
    # display.set_matplotlib_formats('svg')
    matplotlib_inline.backend_inline.set_matplotlib_formats('svg')


def set_figsize(figsize=(3.5, 2.5)):
    """设置图表大小"""
    use_svg_display()
    d2l.plt.rcParams['figure.figsize'] = figsize


def set_axes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend):
    """设置轴"""
    axes.set_xlabel(xlabel)
    axes.set_ylabel(ylabel)
    # 设置x轴缩放
    axes.set_xscale(xscale)
    axes.set_yscale(yscale)
    axes.set_xlim(xlim)
    axes.set_ylim(ylim)
    # 图例
    if legend:
        axes.legend(legend)
    # 函数用于设置绘图区网格线
    axes.grid()


def plot(X, Y=None, xlabel=None, ylabel=None, legend=None,
         xlim=None, ylim=None, xscale='linear', yscale='linear',
         fmts=('-', 'm--', 'g-.', 'r:'), figsize=(3.5, 2.5), axes=None):
    """绘制数据点"""
    """
    fmts:
    -:表示黑色线
    m--:表示虚线红色
    g-.:表示绿色实线,”.“表示实线
    r:红色的点线
    """
    # 图标
    if legend is None:
        legend = []
    set_figsize(figsize)
    axes = axes if axes else d2l.plt.gca()

    # 如果X有一个轴,则输出True
    def has_one_axis(X):
        '''
        hasattr(X, "ndim"):判断X是否有ndim属性
        X.ndim==1:判断x的维度是否为1
        isinstance(X,list):判断X是否为列表类型
        hasattr((X[0],"__len__")):判断X是否至少含有一个元素,防止X[0]访问越界报错
        '''
        return (hasattr(X, "ndim") and X.ndim == 1 or
                isinstance(X, list) and not hasattr(X[0], "__len__"))

    if has_one_axis(X):
        X = [X]
    if Y is None:
        X, Y = [[]] * len(X), X
    elif has_one_axis(Y):
        Y = [Y]
    if len(X) != len(Y):
        X = X * len(Y)
    # 清除axes,即当前figure中的活动的axes,但其他axes保持不变。
    axes.cla()
    for x, y, fmt in zip(X, Y, fmts):
        if len(x):
            axes.plot(x, y, fmt)
        else:
            axes.plot(y, fmt)
    set_axes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend)


x = np.arange(0, 3, 0.1)
plot(x, [f(x), 2 * x - 3], 'x', 'f(x)', legend=['f(x)', 'Tangent line(x=1)'])
# pycharm运行记得添加这句代码
plt.show()

运行输出的图像

在这里插入图片描述

标签:None,set,axes,笔记,学习,动手,len,legend,numerical
From: https://blog.csdn.net/m0_74917610/article/details/136858998

相关文章

  • proteus+keil5仿真学习笔记(第一章 Proteus概况)
    第一章Proteus概况目录前言一、proteus是什么?二、proteus安装三、ISIS编辑窗口介绍四、元器件查找五、防秃小技巧1、快捷键设置2、属性赋值工具的使用总结前言主要参考《零起点学Proteus单片机仿真技术》这本书,结合自己实际仿真中遇到的问题和解决方法,写下......
  • proteus+keil5仿真学习笔记(第二章 1位数码管计数器)
    第二章1位数码管计数器目录第二章1位数码管计数器前言一、数码管的结构原理二、按键应用三、中断处理四、程序设计及仿真proteus电路程序总结前言主要介绍数码管、按键的应用,并涉及单片机中断处理技术。一、数码管的结构原理数码管结构如下:有两种数码......
  • proteus+keil5仿真学习笔记(第三章 4位数码管计数器)
    第三章4位数码管计数器前言一、多位数码管显示程序二、定时器原理三、程序设计与仿真proteus电路程序总结前言4位数码管计数器与1位数码管计数器相比,增加了片选电路,以确定选择哪个数码管进行工作。单片机定时器的应用也与中断处理相似,需要设置一些规定的寄存器,以......
  • 鸿蒙学习笔记-ArkTS工程目录结构
    这里写自定义目录标题ArkTS工程目录结构(Stage模型)AppScope目录entry目录ArkTS工程目录结构(Stage模型)AppScope目录应用程序相关的内容,包含资源和配置文件两部分(我们开发的内容不是放在本目录)resources目录资源文件目录,主要存放全局相关的资源文件resources......
  • Vue3学习- Visual Studio Code安装
    开发Vue,需要一个好用的编辑器,可以让你事半功倍,本文介绍如何安装VisualStudioCode1.下载VisualStudioCodeVisualStudioCode下载地址:VisualStudioCode,点击打开后,选择DownloadforWindows 打开下载文件,点击我同意此协议,点击下一步保留默认选项,点击下一步,安装,最后......
  • CentOS学习笔记-离线下载软件包的方式及对比
    CentOS学习笔记-离线下载软件包的方式及对比CentOSLinuxrpm离线以离线部署KVM为例,研究对比下载获取离线软件包的方法和它们各自的特点。CentOS系统的版本是CentOSLinuxrelease7.9.2009(Core),目的是能够离线部署kvm。初始情况下,有两个虚拟机,它们的系统情况相同,都是空系统,没有......
  • 动手学习数据分析 Task05
    动手学习数据分析Task05本文是Datawhale的组队学习动手学习数据分析的学习笔记,课件内容来源于Datawhale的团队;代码部分参考了b站up主橘子冰的一隅角落的系列视频模型搭建确定数据集是进行监督学习还是无监督学习由任务、数据样本量以及特征的稀疏性来决定模型先尝试使用一......
  • NOI2024前听课笔记2.0-《思维技巧选讲》by chenxia25
    NOI2024前听课笔记2.0-《思维技巧选讲》bychenxia25性质探索堆砌充分条件和必要条件luoguP10144[WC2024]水镜用形式化语言转化条件等价模型的刻画CF1458DFlipandReverseCF1510HHardOptimizationluoguP8293[省选联考2022]序列变换luoguP8416[THUPC2022决......
  • Ollama、Langchain相关学习资源(动态更新)
    大型预训练模型如GPT系列、BERT系列等,在消费级产品和垂直行业应用中加快了部署步伐,包括但不限于智能客服、内容创作、代码生成、决策支持等领域。随着大模型开源,相关的部署工具和框架也得到发展和完善。例如,出现了一些专门针对大模型本地部署的解决方案,像Ollama(虽然该名......
  • 前端学习-vue视频学习010-生命周期
    尚硅谷视频教程组件的生命周期创建挂载更新销毁在特定的时期调用特定的函数,即生命周期vue2的生命周期4个周期,对应8个钩子(生命周期函数)创建:创建前、创建完毕挂载:挂载前、挂载完毕更新:更新前、更新完毕销毁:销毁前、销毁完毕<script>exportdefault{//eslint......