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,无需任何框架依赖。我们将像拆解时钟一样,逐层剖析这个'神秘'的算法:从最简单的感知机开始,一步步实现前向传播、反向传播,最终搭建出一个能识别手写数字的完整神经网络。你会发现,深度学习的核心原理,原来如此直观而美妙!
作者:语文天才高斯