重生之从零开始的神经网络算法学习之路——序篇(环境搭建)

  • 自重生以来,已恍惚许久,但前世的记忆却突然如潮水般涌上心头:不错,你就是那曾经的大明皇帝!但话又说回来,相比于此生如今境遇,亦或许,你不该再甘于平庸下去?

环境选择

  • 操作系统:Windows 11 家庭中文版 版本号:26100.4946
    (重生后的你竟不知道何时电脑被更新了Windows 11,听说bug很多不过还没遇到过)

  • IDE选择:VSCode 版本号:1.103.1
    (开源免费,通过插件便捷集成各种环境)
    下载地址:https://code.visualstudio.com/

  • 语言选择:Python 版本号:3.11.9
    (你并没有贸然选择最新的版本,很理智的选择,据说最新的版本已经不支持某些低版本的操作系统了,为了环境的兼容性,你决定先选择一个较低的版本)
    下载地址:https://www.python.org/downloads/release/python-3119/

    其它版本地址:https://www.python.org/downloads/

安装完以上软件后

1. 配置VSCode插件

  • 打开VSCode,下载所需插件:Python、Pylance、Python Debugger、Python Environments
    img
  • 正确安装后会在INSTALLED目录下出现:
    img
  • 安装完插件后基本使用默认配置,按需修改

2. 创建工作空间

  • 点击 File → Open Folder,选择新建文件夹打开
  • 点击 File → Save Workspace As,保存为工作空间
  • 打开名为"神经网络算法"的文件夹并保存为工作空间:
    img

3. 创建Python虚拟环境

  • 在VSCode上方搜索框中输入 >Python:Create Environment
  • 点击确定后选择 Venv
  • 初次创建时选择Python 3.11.9版本:
    img
  • 如果已经创建过了,再次使用>Python:Create Environment输入点击确定后,点击Venv,如下:
    img
  • 可见,可以选择使用当前已存在的虚拟环境,或者删除原来的虚拟环境并新建一个虚拟环境

4. 理解Python虚拟环境

  • 满足代码在当前工作目录运行的依赖环境
  • 包括:基础模块、第三方模块、系统环境配置脚本、Python可执行文件等
    img

5. 在终端运行虚拟环境

  • 输入 >Python:Create Terminal
    PS C:\Users\666\Desktop\python练习\神经网络算法> & C:/Users/666/Desktop/python练习/神经网络算法/.venv/Scripts/Activate.ps1
    (.venv) PS C:\Users\666\Desktop\python练习\神经网络算法> 
    
  • 终端头部出现 (.venv) 表示进入虚拟环境模式
  • 在此模式下操作不影响本地Python环境
    可见本质上就是运行了一个脚本,使得当前终端进入了一个venv虚拟终端的模式下,你心想以后有机会再慢慢研究这个脚本里的具体内容吧,你决定本地的Python你就暂时不做任何操作了,方便未来创建新的虚拟环境时都是一个初始的相对干净的环境

6. 安装和卸载第三方模块

安装Pytorch尝试:

  • 注:以下为错误示范,用于演示该类报错出现时的处理方法
  • 你想安装一个学习人工智能可能会用到的经典模块Pytorch,在虚拟环境输入了pip install pytorch,开始的时候很顺,如下:
(.venv) PS C:\Users\666\Desktop\python练习\神经网络算法> pip install pytorch
Collecting pytorch
  Downloading pytorch-1.0.2.tar.gz (689 bytes)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
  • 但很遗憾最后还是报错了,如下:
Building wheels for collected packages: pytorch
  Building wheel for pytorch (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for pytorch (pyproject.toml) did not run successfully.
    │ exit code: 1
    ╰─> [23 lines of output]
    ...
    Exception: You tried to install "pytorch". The package named for PyTorch is "torch"
    ...
  • 你很敏锐地注意到在一串输出的最后,有一行如下:
  • Exception: You tried to install "pytorch". The package named for PyTorch is "torch"
  • 以上错误常出现于模块名称变更导致的安装时报错
  • 所以你决定重新输入pip install torch,如下:

正确安装Torch:

(.venv) PS C:\Users\666\Desktop\python练习\神经网络算法> pip install torch
Collecting torch
  WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError...

使用清华镜像加速:

(.venv) PS C:\Users\666\Desktop\python练习\神经网络算法> pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting torch
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/84/57/.../torch-2.8.0-cp311-cp311-win_amd64.whl (241.4 MB)
  • 然后你就舒服了,下载速度快得飞起,于是你记住了每次下载第三方模块的时候都要加上-i https://pypi.tuna.tsinghua.edu.cn/simple , 确实好使(在没有神秘力量的加持时)
  • 安装时你也可以看见.venv/Lib/site-packages目录下会不停新增文件,其实就是下载的模块和依赖已经都安装到该目录下了
  • 并非漫长的等待后,安装成功的话最后会输出如下:

安装成功输出:

Installing collected packages: mpmath, typing-extensions, sympy, networkx, MarkupSafe, fsspec, filelock, jinja2, torch
Successfully installed MarkupSafe-3.0.2 filelock-3.19.1 ... torch-2.8.0
  • 可见除了torch,还会自动安装其它依赖模块,包括mpmath等,以及各模块的版本号也会显示

卸载Torch:

  • 注:当环境中不需要某模块时,可以用以下方式卸载指定模块
  • 在虚拟终端中输入pip uninstall torch,如下:
(.venv) PS C:\Users\666\Desktop\python练习\神经网络算法> pip uninstall torch 
Found existing installation: torch 2.8.0
Uninstalling torch-2.8.0:
  Would remove:
    c:\users\666\desktop\python练习\神经网络算法\.venv\lib\site-packages\functorch\*
    ...
Proceed (Y/n)? y    # 这里输入Y或y然后回车
  Successfully uninstalled torch-2.8.0
  • 当然这里只卸载了torch模块,至于刚刚下载的依赖模块mpmath等还没被卸载,你决定以后再卸载吧

7. 测试mpmath模块

在以后mpmath被卸载之前,你还是想先试一下该模块的调用,毕竟这也是你幸幸苦苦花费流量下载下来的,于是你在神经网络算法文件夹下新建了一个demo.py文件,编辑该文件,输入以下内容:

# -*- coding: utf-8 -*-
# demo.py

from mpmath import mp, mpf, sqrt, sin, pi, nstr, matrix, quad, findroot

# 1. 基本设置:设置精度(小数位数)
mp.dps = 50  # 设置50位小数精度
print("="*60)
print(f"当前计算精度: {mp.dps} 位小数\n")

# 2. 高精度数值创建与计算
a = mpf('0.1')  # 精确表示0.1(避免浮点误差)
b = mpf('0.2')
c = a + b

print("精确计算 0.1 + 0.2:")
print(f"标准浮点: 0.1 + 0.2 = {0.1 + 0.2}")
print(f"mpmath  : 0.1 + 0.2 = {nstr(c, 20)}")  # 输出20位有效数字
print()

# 3. 数学函数计算
print("高精度数学函数计算:")
print(f"sqrt(2) = {nstr(sqrt(2), 50)}")
print(f"sin(pi) = {nstr(sin(pi), 10)}")  # 应接近0
print()

# 4. 数值积分
def integrand(x):
    return 4 / (1 + x**2)

pi_calc = quad(integrand, [0, 1])  # 积分计算π
print("数值积分计算π:")
print(f"mpmath的pi值: {nstr(pi, 50)}")
print(f"积分计算结果: {nstr(pi_calc, 50)}")
print(f"两者差值  : {nstr(pi - pi_calc, 10)}")
print()

# 5. 方程求解
def equation(x):
    return x**3 - 2*x - 5

root = findroot(equation, 2)  # 在x=2附近找根
print("方程求解 x^3 - 2x - 5 = 0:")
print(f"近似解: {nstr(root, 25)}")
print(f"验证解: {nstr(equation(root), 10)} (应接近0)")
print()

# 6. 矩阵运算
print("高精度矩阵运算:")
A = matrix([[2, -1], [1, 3]])
B = matrix([[pi], [sqrt(2)]])
print("矩阵 A:")
print(nstr(A, 5))
print("\n向量 B:")
print(nstr(B, 10))

solution = A**-1 * B  # 解线性方程组 AX = B
print("\n解向量 X = A^-1 * B:")
print(nstr(solution, 25))

编辑好后,你在该文件的右上方看见了如下按钮,你直接点击就会运行了,如下:
img

8. 调试代码

还来不及为你写的demo.py文件得到完美的输出感到高兴,在你喝杯茶上个厕所的功夫回来,你再次运行该文件,却得到了部分输出如下:

精确计算 0.1 + 0.2:
标准浮点: 0.1 + 0.2 = 0.30000000000000004
mpmath  : 0.1 + 0.2 = -0.1

看到如此异样的输出,成年人的崩溃几乎就在一瞬之间,但回想起前世和众爱妃嘻笑调戏的种种,看着旁边捂嘴偷笑的现任女友,你觉得或许这也还算不上什么,所以你决定调试一下,在关键部位添加断点,并点击调试运行代码,如下:
img
你一步步地操作,胆颤心惊,如下:
img
直到问题解决后,望着身边的人儿,或许你也找回了一些曾经的悸动?正当你一阵胡思乱想、久久不能释怀的时候,突然你的美女上司不知何时竟从房门外进来,笑意盈盈地对你说道:义人,你也不想你的代码经常这样出bug吧?说罢,还不经意地将眼眸飘向那身边人,你不由得惊出一身冷汗,四肢仿佛无法动弹,你害怕再失去些什么,刹那间,你的嘴角连一句话竟也说不出来。看你愣住了,你那上司竟不由分说向着旁边那人走去,一时间,你在心中歇斯底里地呐喊:不要...

啊!!!你错愕地在电脑屏幕前醒来,原来刚刚那一幕竟只是黄粱一梦么?

posted on 2025-08-19 16:46  cmxcxd  阅读(32)  评论(0)    收藏  举报