Python入门深度学习指南:基于Python的理论与实践实现

第一章 Python入门

1.1 Python是什么

Python 是一种高级编程语言,由 Guido van Rossum 于 1989 年创建,并在 1991 年正式发布。Python 具有以下特点:

  • 易读易写:Python 语法简洁,代码可读性强,使开发者能够更专注于问题本身。

  • 跨平台:Python 可以在 Windows、Linux 和 macOS 上运行,具有良好的可移植性。

  • 丰富的库:Python 生态系统中包含大量的第三方库,如 NumPy、Pandas、Matplotlib 等,使得开发者可以快速构建应用程序。

  • 动态类型:Python 是一种动态类型语言,不需要声明变量类型,运行时自动推断数据类型。

  • 📌Python和C/C++区别?​
    C/C++为静态语言,这意味着编码时须声明变量类型,然后由编译器编译成机器码运行。

    Python为动态语言,编码时无需声明变量类型,由解释器逐句将代码解释成机器码运行。

  • 广泛应用:Python 被广泛应用于 Web 开发、数据分析、人工智能、深度学习等领域。

  • 📌 ​​为什么选择Python做深度学习?​
    相比C++/Java,Python语法简洁,代码可读性强,开发效率高,且主流深度学习框架(如TensorFlow、Pytorch)优先提供Python接口。

    1.2 Python的安装

    在学习 Python 之前,我们需要先安装 Python 解释器。

    1.2.1 python版本

    目前,Python 有两个主要版本:Python 2 和 Python 3。Python 2 已经停止维护,因此建议使用 Python 3 进行开发。

    可以在 Python 官网 下载适合自己操作系统的 Python 版本。安装完成后,可以通过以下命令检查 Python 版本:

    python --version  # 或者
    python3 --version
    

    1.2.2 外部库

    Python 自带了一些标准库,但在深度学习或其他开发应用中,我们通常需要安装一些第三方库,如 NumPy、Matplotlib、Pandas 等。可以使用 pip(Python 的包管理工具)来安装这些库,例如:

    pip install numpy matplotlib pandas
    

    📌 ​​tips​
    或许你无法使用pip进行直接下载,此时你可以使用镜像源进行下载,例如使用清华源

    pip install some-package -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 
    
    #将some-pakage替换成你想要下载的库即可

    1.2.3 Anaconda

    为了更好地控制Python版本及环境包,我们需要使用到Anaconda,这是一个包含 Python 及其常用数据科学库的发行版。Anaconda 适用于机器学习和深度学习开发,提供了更便捷的环境管理工具 conda

    📌 ​​tips​
    如果你想要使用轻量级管理,可以考虑使用Miniconda(Miniconda下载)

    可以在 Anaconda 官网 下载 Anaconda,并通过以下命令检查是否安装成功:

    conda --version
    

    1.3 Python解释器

    Python 解释器可以直接执行 Python 代码,例如,在终端或命令行输入以下代码:

    print("Hello, Python!")
    

    1.3.1 算术计算

    Python 可以像计算器一样执行算术运算,例如:

    print(3 + 5)   # 加法
    print(10 - 4)  # 减法
    print(6 * 7)   # 乘法
    print(8 / 2)   # 除法
    print(9 // 2)  # 整数除法
    print(2 ** 3)  # 幂运算
    

    1.3.2 数据类型

    Python 具有多种内置数据类型,包括整数(int)、浮点数(float)、字符串(str)、布尔型(bool)等。例如:

    x = 10        # 整数
    y = 3.14      # 浮点数
    z = "Python"  # 字符串
    z = 'python'  # 字符串
    b = True      # 布尔值
    

    1.3.3 变量

    Python 变量不需要显式声明类型,直接赋值即可:

    name = "Alice"
    age = 25
    print(name, age)
    

    1.3.4 列表

    列表(list)是 Python 中常用的数据结构,可以存储多个元素,并支持索引访问:

    numbers = [1, 2, 3, 4, 5]
    print(numbers[0])  # 访问第一个元素
    numbers.append(6)  # 添加元素
    print(numbers)
    

    1.3.5 字典

    字典(dict)用于存储键值对,例如:

    person = {"name": "Alice", "age": 25}
    print(person["name"])
    

    1.3.6 布尔型

    布尔型用于逻辑判断:

    print(5 > 3)  # 输出 True
    print(2 == 4)  # 输出 False
    

    1.3.7 if语句

    Python 使用 if 语句进行条件判断:

    x = 10
    if x > 5:
        print("x 大于 5")
    else:
        print("x 小于等于 5")
    

    1.3.8 for语句

    for 循环用于遍历列表等可迭代对象:

    for i in range(5):
        print(i)
    

    1.3.9 函数

    Python 使用 def 关键字定义函数:

    def add(a, b):
        return a + b
    
    print(add(3, 5))
    

    1.4 Python脚本文件

    1.4.1 保存为文件

    虽然可以直接在python解释器下编写程序运行,但是那样会些许麻烦,所以可以将 Python 代码保存为 .py 文件,例如 script.py,然后使用以下命令运行:

    # 训练脚本示例
    import numpy as np
    
    def train_model():
        print("Training started...")
    
    if __name__ == '__main__':
        train_model()
    python script.py

    1.4.2 类

    Python 支持面向对象编程,可以使用 class 定义类:

    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def greet(self):
            print(f"Hello, my name is {self.name}.")
    
    p = Person("Alice", 25)
    p.greet()
    

    1.5 NumPy

    NumPy 是 Python 中用于科学计算的库,提供了高效的多维数组操作。

    1.5.1 导入NumPy

    import numpy as np
    

    1.5.2 生成NumPy数组

    a = np.array([1, 2, 3])  # 一维数组
    b = np.zeros((3, 3))     # 3x3零矩阵
    c = np.arange(10)        # 类似range(10)

    1.5.3 NumPy的算术运算

    a = np.array([1, 2, 3])
    b = np.array([4, 5, 6])
    print(a + b)  # 逐元素加法 → [5, 7, 9]    减法同理,可自行尝试
    
    x = np.array([1, 2, 3])
    y = np.array([4, 5, 6])
    print(x * y)  # 逐元素乘法 → [4, 10, 18]    除法同理,可自行尝试
    

    1.5.4 NumPy的N维数组

    matrix = np.array([[1, 2], [3, 4]])
    print(matrix.shape)  # 输出维度 → (2, 2)

    1.5.5 广播

    a = np.array([[1], [2], [3]])
    b = np.array([10, 20])
    print(a + b)  # 广播相加 → [[11,21], [12,22], [13,23]]

    1.5.6 访问元素

    arr = np.array([[1, 2, 3], [4, 5, 6]])
    print(arr[1, 2])   # 第2行第3列 → 6
    print(arr[:, 1:3]) # 所有行的2-3列 → [[2,3], [5,6]]

    1.6 Matplotlib

    1.6.1 绘制简单图形

    import matplotlib.pyplot as plt
    
    x = np.linspace(0, 2*np.pi, 100)
    y = np.sin(x)
    plt.plot(x, y)
    plt.title("Sine Wave")
    plt.show()

    1.6.2 pyplot的功能

    # 多子图绘制
    plt.subplot(1, 2, 1)  # 1行2列的第1个
    plt.plot(x, np.sin(x))
    
    plt.subplot(1, 2, 2)
    plt.plot(x, np.cos(x))
    plt.show()

    1.6.3 显示图像

    from PIL import Image
    img = np.array(Image.open('cat.jpg'))
    plt.imshow(img)
    plt.axis('off')  # 隐藏坐标轴
    plt.show()

    1.7 小结

    本章介绍了 Python 的基础知识,包括 Python 的安装、基本语法、控制结构、数据类型、面向对象编程,以及 NumPy 和 Matplotlib 的基本使用。在掌握这些内容后,我们可以进一步学习深度学习相关的内容。

    知识点 关键用途
    Python基础 控制流程、函数定义
    NumPy 张量操作、广播机制
    Matplotlib 损失曲线可视化、数据分布展示

    在接下来的系列中,我将手把手带你从零实现神经网络——仅用Python和NumPy,无需任何框架依赖。我们将像拆解时钟一样,逐层剖析这个'神秘'的算法:从最简单的感知机开始,一步步实现前向传播、反向传播,最终搭建出一个能识别手写数字的完整神经网络。你会发现,深度学习的核心原理,原来如此直观而美妙!

    作者:语文天才高斯

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python入门深度学习指南:基于Python的理论与实践实现

    发表回复