随笔分类 -  学习

摘要:# 优化: # 1. 增加Modulist类,再次封装每层及forward和backward # 2. 删除import matplotlib.pyplot as plt,暂时不需要画图;删去全局变量shuffle,在linear类实现 # 3. 增加__repr__魔数,可以快速查看每层大小 # 阅读全文
posted @ 2025-09-25 15:27 李大嘟嘟 阅读(7) 评论(0) 推荐(0)
摘要:__repr__ 是 Python 中一个非常重要的魔术方法(Magic Method),也常被称为双下划线方法 (Dunder Method)。它的主要作用是为对象提供一个官方的、明确的、面向开发者的字符串表示形式(Representation)。 简单来说,当你需要用代码的方式来重建或识别一个对 阅读全文
posted @ 2025-09-25 14:17 李大嘟嘟 阅读(12) 评论(0) 推荐(0)
摘要:二维数组ba,三维数组cba,多维数组n...ba,他们的axis=-1,这个维度都是指向a axis=-1 的通用性 无论 NumPy 数组有多少个维度,axis=-1 总是指向最后一个维度。 数组类型 形状(Shape) 维度索引 axis=-1 指向 一维数组 (a,) axis=0 或 ax 阅读全文
posted @ 2025-09-25 13:37 李大嘟嘟 阅读(14) 评论(0) 推荐(0)
摘要:np.arange 函数是 NumPy 库中一个非常实用的函数,用于创建等差数列。它的功能类似于 Python 内置的 range() 函数,但它返回的是一个 numpy.ndarray 类型的数组,这使得它在科学计算中非常方便。 np.arange 的基本用法 np.arange 的基本语法有三种 阅读全文
posted @ 2025-09-24 23:12 李大嘟嘟 阅读(16) 评论(0) 推荐(0)
摘要:ReLU 函数 ReLU(Rectified Linear Unit,修正线性单元)是目前在深度学习中最常用的激活函数。它的数学表达式非常简单: f(x) = max(0, x) 这意味着当输入 $x$ 大于 0 时,输出就是 $x$ 本身;当输入 $x$ 小于或等于 0 时,输出就是 0。 ReL 阅读全文
posted @ 2025-09-23 21:37 李大嘟嘟 阅读(74) 评论(0) 推荐(0)
摘要:tanh函数(双曲正切函数)是神经网络中一种常用的激活函数,它的数学表达式为: 它的输出范围是 (-1, 1)。 tanh函数的特点 非线性:和 Sigmoid 函数一样,tanh 函数也是非线性的,这使得它能够为神经网络引入非线性特性,从而学习和解决更复杂的问题。 对称性:tanh 函数关于原点对 阅读全文
posted @ 2025-09-23 21:17 李大嘟嘟 阅读(37) 评论(0) 推荐(0)
摘要:#这个版本考虑将隐藏层、输出层及对应的forward和backward封装到对于类中 #减少了步长,实测lr>0.02就会溢出,可能是哪里没有优化好 # 导入必要的库 import numpy as np import os import struct import matplotlib.pyplo 阅读全文
posted @ 2025-09-23 21:06 李大嘟嘟 阅读(17) 评论(0) 推荐(0)
摘要:# 导入必要的库 import numpy as np import os import struct import matplotlib.pyplot as plt # 定义导入函数 def load_images(path): with open(path, "rb") as f: data = 阅读全文
posted @ 2025-09-23 11:20 李大嘟嘟 阅读(14) 评论(0) 推荐(0)
摘要:在机器学习和深度学习中,我们通常不会用全部数据来训练模型,而是将其划分为三个独立的部分:训练集、验证集和测试集。 这就像一个学生准备考试一样: 1. 训练集 (Training Set) 训练集是学生上课时做的所有练习题。 作用:用来训练模型。模型通过在训练集上学习数据中的模式和规律,并根据这些规律 阅读全文
posted @ 2025-09-22 18:05 李大嘟嘟 阅读(48) 评论(0) 推荐(0)
摘要:[::-1] 是 Python 中一种非常简洁且常用的切片(slice)语法,它的作用是反转序列。 它可以用在多种数据类型上,包括: 列表 (list) 字符串 (string) 元组 (tuple) NumPy 数组 语法解析 切片语法的一般形式是:[start:stop:step] start: 阅读全文
posted @ 2025-09-22 17:03 李大嘟嘟 阅读(10) 评论(0) 推荐(0)
摘要:原代码 def sigmoid(x): result = 1 / (1 + np.exp(-x)) return result 问题:当-x值过大,会导致溢出错误 改进后代码 def improved_sigmoid(x): # 创建一个与输入x相同大小的空数组来存储结果 result = np.z 阅读全文
posted @ 2025-09-20 15:12 李大嘟嘟 阅读(10) 评论(0) 推荐(0)
摘要:np.clip() 是 NumPy 中一个非常实用的函数,用于将数组中的值裁剪(或者说限制)在一个指定的区间内。 它的作用就像一把剪刀,把数组中所有超出规定范围的数值都剪掉,让它们回到这个范围的边缘。 np.clip() 的基本用法 np.clip() 的基本语法是: np.clip(a, a_mi 阅读全文
posted @ 2025-09-19 17:29 李大嘟嘟 阅读(39) 评论(0) 推荐(0)
摘要:keepdims 是 NumPy 中一个非常实用的参数,它在对数组进行聚合操作(如 sum, mean, max 等)时,用来控制输出数组的维度。 keepdims 的作用 当你对一个数组进行聚合操作时,结果通常会减少一个维度。 例如,对一个 (3, 4) 的二维数组按行求和: import num 阅读全文
posted @ 2025-09-19 15:54 李大嘟嘟 阅读(8) 评论(0) 推荐(0)
摘要:argmax 是 NumPy 和许多其他科学计算库(如 PyTorch、TensorFlow)中的一个非常常用的函数,它的作用是返回数组中最大值的索引。 简单来说,argmax 告诉你最大值在哪里,而不是最大值是多少。 argmax 的基本用法 np.argmax(a, axis=None, out 阅读全文
posted @ 2025-09-16 16:58 李大嘟嘟 阅读(6) 评论(0) 推荐(0)
摘要:.zip() 函数在 Python 中是一个非常实用的内置函数,它用于将多个可迭代对象(比如列表、元组等)中的元素打包成一个元组的迭代器。 简单来说,它的作用就是把不同序列中对应位置的元素配对,就像拉链一样把两排牙齿咬合在一起。 zip() 的基本用法 zip(iterable1, iterable 阅读全文
posted @ 2025-09-15 22:12 李大嘟嘟 阅读(11) 评论(0) 推荐(0)
摘要:在 Python 中,数组相乘有多种方式,取决于你想要实现的是元素级别的相乘还是矩阵乘法。这两种操作在数学和数据科学中有本质区别。 1. 元素级别相乘 (Element-wise Multiplication) 这是最常见的数组相乘方式,它将两个形状相同的数组的对应位置的元素相乘,然后生成一个新的数 阅读全文
posted @ 2025-09-15 22:10 李大嘟嘟 阅读(16) 评论(0) 推荐(0)
摘要:reshape() 是 NumPy 数组的一个方法,用于改变数组的形状,同时不改变其数据。 简单来说,它就像一个魔术师,能在不改变魔方块数量的情况下,将一个魔方重新排列成不同的形状。 reshape() 的基本用法 arr.reshape(new_shape) arr 是你要改变形状的 NumPy 阅读全文
posted @ 2025-09-15 21:45 李大嘟嘟 阅读(28) 评论(0) 推荐(0)
摘要:train-labels.idx1-ubyte 是 MNIST 数据集中的一个文件。它不是一个普通的文本文件,而是一个经过特定格式编码的二进制文件。 简单来说,这个文件里只包含一个东西:MNIST 训练集图像的标签。 文件内容 这个文件的内容是一个字节序列,其中每个字节都代表一个手写数字的标签。它包 阅读全文
posted @ 2025-09-15 21:29 李大嘟嘟 阅读(36) 评论(0) 推荐(0)
摘要:if __name__ == "__main__": 是 Python 中的一个标准代码块,用于检查一个脚本是否是直接运行的。 工作原理 当一个 Python 脚本被解释器执行时,它会自动定义一些特殊变量。其中一个就是 __name__。 如果脚本是直接运行的,Python 会将 __name__ 阅读全文
posted @ 2025-09-15 18:10 李大嘟嘟 阅读(9) 评论(0) 推荐(0)
摘要:enumerate() 是 Python 中一个非常实用的内置函数,它用于在遍历一个可迭代对象(如列表、元组、字符串等)的同时,获取每个元素的索引和值。 为什么需要 enumerate()? 在没有 enumerate() 之前,如果你想同时获取索引和值,通常需要手动维护一个计数器: fruits 阅读全文
posted @ 2025-09-15 18:03 李大嘟嘟 阅读(31) 评论(0) 推荐(0)