记录热舒适性的预测与推荐的学习
第一篇 从DNN开始探究
1. 选用工具
语言框架:pytorch
之前写深度学习使用的TensorFlow,这次的学习基于pytorch的学习,关于两者之间的区别,稍后有时间可以介绍,这里先留个坑,待之后时间回来填坑。
这里区别可以先参考pytorch和TensorFlow的区别之后有想法可以继续填坑。
2. 代码实现
第一篇我先实现一个简单的DNN代码,使用的数据集则是最经典的Minst,手写数据集。代码是参考pytorch示例:深度神经网络实现,这里我会复现下这里面的代码,可以直接参考我展示的下方代码,链接里会详细介绍了一些优化方法,有兴趣的可以点击去参考。
- 该神经网络结构:1输入层,1全连接的隐含层,1输出层,预期达到98%左右的准确率,下面来进行详细的代码设计,看看效果如何。
- 配置库和配置参数,这一步是动态修改的,在编写代码时用到什么库import就可以
import torch
import torch.nn as nn
import torchvision.datasets as dsets
import torchvision.transforms as transforms
from torch.autograd import Variable
torch.manual_seed(1) # 设置人工种子,保证结果可重复
input_size = 784 # 输入特征的大小,图片为28*28
hidden_size = 500 # 隐藏层为500个神经元
num_classes = 10 # 输出层:10 类,手写数据集为10分类
num_epochs = 5 # 训练参数:训练轮数,根据训练结果可以调节
batch_size = 100 # 参数: 批大小 60000个训练样本要分为600个批次进行
learning_rate = 0.001 # 参数:学习率 一般默认为0.001,根据结果再调整
- 加载数据集,mnist数据集在pytorch中有集成,可以直接使用,放在./data目录中
# 加载数据集
train_dataset = dsets.MNIST(root='./data',
train=True,
transform=transforms.ToTensor(),
download=True)
# load test set
test_dataset = dsets.MNIST(root='./data',
train=False,
transform=transforms.ToTensor())
- 批处理数据
torch.utils.data.DataLoader 函数:【在训练模型时使用到此函数,用来把训练数据分成多个小组,此函数每次抛出一组数据。直至把所有的数据都抛出。就是做一个数据的初始化。】
# 训练集的shuffle必须为True,表示每次从60000训练样本中随机选择100个作为一个批次
train_loader = torch.utils.data.DataLoader(dataset=train_dataset,
batch_size=batch_size,
shuffle=True)
# 测试集的shuffle要为False,即要保证10000个测试样本都只被预测一遍
test_loader = torch.utils.data.DataLoader(dataset=test_dataset,
batch_size=batch_size,
shuffle=False)
- 创建DNN模型,其中使用nn包来创建
# 创建DNN模型
class Net(nn.Module):
def __init__(self, input_size, hidden_size, num_classes):
super(Net, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size) # 全连接
self.relu == nn.ReLU(

最低0.47元/天 解锁文章
830





