利用CNN进行天气识别(pytorch版)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客
🍖 原作者:K同学啊 | 接辅导、项目定制
一、前期准备
设置GPU
常规操作,导入相关的深度学习包,比如可视化包,图片处理包等。
import torch
import torch.nn as nn
import torchvision.transforms as transforms
import torchvision
from torchvision import transforms, datasets
import os,PIL,pathlib,random
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
device
二、导入数据并进行预处理
1、导入数据
这里我们使用pathlib函数进行数据的导入,pathlib是Python标准库中处理文件路径的模块,提供了一种面向对象的方式来操作文件的系统路径;其中,path类是核心类,用于表示文件系统中的路径,有一个好处就是不用担心操作系统的差异。
data_dir = "/home/kaijiang/zlf/CSDN task/weather_photos/"
data_dir = pathlib.Path(data_dir)
data_paths = list(data_dir.glob('*'))#pathlib.Path中的global方法获取指定目录中的所有的文件和子目录的路径
classeNames = [str(path).split("\\")[0] for path in data_paths]#分割路径
classeNames
这里我们将路径赋值给变量data_dir ,然后利用pathlib模块,其中pathlib模块提供了一种面向对象的操作文件路径的方式,pathlib.Path是 Python 中用于处理文件路径的类,提供了更简洁、易读的方式来操作文件路径。下面是pathlib.Path的基本用法示例:
from pathlib import Path
path = Path("/home/user/Documents/file.txt")
print("文件名:", path.name)
print("目录:", path.parent)
if path.exists():
print("路径存在")
else:
print("路径不存在")
if path.is_file():
print("这是一个文件")
if path.is_dir():
print("这是一个目录")
new_path = path / "new_folder" / "new_file.txt"
print("新路径:", new_path)
通过使用 pathlib.Path(),可以方便地进行路径操作,而不需要担心不同操作系统之间的路径分隔符问题。glob()方法获得子目录然后进行路径的分割以后,运行代码,得到一下结果:
2、 将数据进行可视化
import matplotlib.pyplot as plt
from PIL import Image
# 指定图像文件夹路径
image_folder ="/home/kaijiang/zlf/CSDN task/weather_photos/sunrise/"
# 获取文件夹中的所有图像文件
image_files = [f for f in os.listdir(image_folder) if f.endswith((".jpg", ".png", ".jpeg"))]
# 创建Matplotlib图像
fig, axes = plt.subplots(3, 8, figsize=(16, 6))
# 使用列表推导式加载和显示图像
for ax, img_file in zip(axes.flat, image_files):
img_path = os.path.join(image_folder, img_file)
img = Image.open