[人工智能自学] Python包学习-Matplotlib
参考教程:
fantastic-matplotlib
matplotlib 教程
Matplotlib简明手册
Matplotlib是一个2D绘图的包。在深度学习中,训练模型时通常会记录训练损失随训练轮次(epoch)的变化,可以很好地展示变化趋势。
Matplotlib 通常与 NumPy 和 SciPy(Scientific Python)一起使用
数据可视化基础
import matplotlib.pyplot as plt
import numpy as np
# 模拟训练损失数据
epochs = np.arange(1, 11) # 1到10个轮次
train_loss = [0.9, 0.7, 0.5, 0.4, 0.35, 0.3, 0.28, 0.26, 0.25, 0.24]
plt.plot(epochs, train_loss)
plt.xlabel('Epochs')
plt.ylabel('Train Loss')
plt.title('Training Loss over Epochs')
plt.show()
显示一个折线图。x 轴是训练轮次(1 - 10),y 轴是训练损失。从图中可以直观地看到随着训练轮次的增加,训练损失逐渐降低,这符合一般的模型训练期望。
可视化图像数据(如果深度学习涉及图像领域
显示单张图像
假设我们有一张简单的灰度图像(这里用随机数据模拟),其形状为 (100, 100)(代表高度和宽度)
import numpy as np
img_data = np.random.randint(0, 256, (100, 100)) # 生成随机灰度图像数据
plt.imshow(img_data, cmap='gray')
plt.title('Random Grayscale Image')
plt.show()
窗口中会显示一张灰度图像,图像中的每个像素点颜色由其灰度值决定。由于是随机数据,图像看起来是随机的黑白图案。
显示多张图像(例如一个批次的图像)
假设我们有一个批次大小为 4 的图像数据(同样是模拟数据),每个图像形状为 (50, 50)
batch_size = 4
img_height = 50
img_width = 50
batch_images = np.random.randint(0, 256, (batch_size, img_height, img_width))
fig, axes = plt.subplots(1, batch_size, figsize=(15, 3))
for i in range(batch_size):
axes[i].imshow(batch_images[i], cmap='gray')
axes[i].axis('off')
plt.show()
窗口中会显示一行 4 张灰度图像。figsize=(15, 3)参数指定了整个图形的大小,axes[i].axis(‘off’)用于关闭每个子图的坐标轴显示,使图像显示更加简洁,方便查看图像内容。这些图像也是由随机数据生成的,所以每张图像的图案各不相同。
可视化模型结构(简单示例)
对于一个简单的三层神经网络(输入层、隐藏层和输出层),我们可以用简单的图形来表示。
import networkx as nx
import matplotlib.pyplot as plt
G = nx.DiGraph()
G.add_nodes_from(['Input Layer', 'Hidden Layer', 'Output Layer'])
G.add_edges_from([('Input Layer', 'Hidden Layer'), ('Hidden Layer', 'Output Layer')])
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True, node_size=1500, node_color='skyblue', font_size=10)
plt.title('Simple Neural Network Structure')
plt.show()
窗口中会显示一个有向图,代表三层神经网络的结构。节点(Input Layer、Hidden Layer 和 Output Layer)用蓝色的圆形表示,节点之间的连线表示数据的流动方向,从输入层到隐藏层,再到输出层。通过这个简单的图形可以对神经网络的基本架构有一个直观的理解