深度学习实战——天气识别

该博客详细介绍了使用深度学习进行天气识别的过程,包括模块导入、参数设置、GPU检查、数据准备、测试集划分、数据维度查看、模型训练、编译及评估,最终得出模型的性能表现。

目录

 1.模块导入

2.参数设置

3.查看GPU是否可用

4.数据准备

 5.划分测试集

6.查看数据维度

7.模型训练

 8.模型编译

9.模型训练

10.模型评估

 11.评估结果


官方合作微信:gldz_super

数据由四种天气组成,分别是cloudy、rain、shine以及sunrise四种如下所示:

 1.模块导入

import pathlib
import os, PIL
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras import regularizers
from tensorflow.keras import layers,models
import numpy as np

2.参数设置

# 参数设置
batch_size = 32
img_height = 224
img_width = 224
num_classes = 4
epochs = 30
### 完整的基于PaddlePaddle的昆虫识别项目 对于构建一个完整的基于PaddlePaddle框架的昆虫识别深度学习模型,可以遵循类似的结构化方法来实现。虽然提供的参考资料主要集中在PyTorch上[^1],这里将展示如何利用PaddlePaddle创建这样的应用。 #### 数据准备 首先需要收集并预处理用于训练的数据集。假设已经有一个包含多种昆虫图像及其标签的数据集: ```python import paddle from paddle.vision import transforms as T from paddle.io import Dataset import os from PIL import Image class InsectDataset(Dataset): def __init__(self, root_dir, transform=None): self.root_dir = root_dir self.transform = transform self.images = [] for label in sorted(os.listdir(root_dir)): path = os.path.join(root_dir, label) if not os.path.isdir(path): continue for fname in os.listdir(path): self.images.append((os.path.join(label, fname), int(label))) def __len__(self): return len(self.images) def __getitem__(self, idx): img_path, label = self.images[idx] image = Image.open(os.path.join(self.root_dir, img_path)).convert('RGB') if self.transform is not None: image = self.transform(image) return image, label transform = T.Compose([ T.Resize(256), T.CenterCrop(224), T.ToTensor(), ]) dataset = InsectDataset('./insects', transform=transform) dataloader = paddle.io.DataLoader(dataset, batch_size=32, shuffle=True) ``` #### 构建模型 接下来定义卷积神经网络架构。此处采用ResNet作为基础模型,并对其进行微调以适应特定的任务需求: ```python model = paddle.vision.models.resnet50(pretrained=True) num_ftrs = model.fc.in_features model.fc = paddle.nn.Linear(num_ftrs, num_classes=len(set([label for _, label in dataset]))) paddle.summary(model, (1, 3, 224, 224)) ``` #### 训练过程 设置损失函数、优化器以及评估指标来进行模型训练: ```python criterion = paddle.nn.CrossEntropyLoss() optimizer = paddle.optimizer.Adam(parameters=model.parameters(), learning_rate=0.001) for epoch in range(num_epochs): running_loss = 0.0 correct_predictions = 0 total_samples = 0 for images, labels in dataloader: outputs = model(images) loss = criterion(outputs, labels) optimizer.clear_grad() loss.backward() optimizer.step() predicted_labels = paddle.argmax(outputs, axis=-1) correct_predictions += sum(predicted_labels.numpy() == labels.numpy()) total_samples += len(labels) running_loss += loss.item() accuracy = correct_predictions / total_samples * 100. print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {running_loss/total_samples:.4f}, Accuracy: {accuracy:.2f}%') save_path = './saved_models/insect_recognition.pdparams' paddle.save(model.state_dict(), save_path) print("Model saved at", save_path) ``` 上述代码展示了从数据加载到模型保存的一个完整流程,在实际操作过程中还需要考虑更多细节如超参数调整等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI炮灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值