pytorch 去掉全连接层_Pytorch全连接网络

本篇开始学习搭建真正的神经网络,前一部分讨论深度学习中预处理数据的基本流程;后一部分构建了两种全连接网络,用三种不同方案拟合时序数据;并在例程中详细分析误差函数,优化器,网络调参,以及数据反向求导的过程。数据预处理本篇使用航空乘客数据AirPassengers.csv,其中包括从1949-1960年每月旅客的数量,程序则用于预测未来几年中每月的旅客数量,数据可从以下Git项目中下载。https:/...
摘要由CSDN通过智能技术生成

本篇开始学习搭建真正的神经网络,前一部分讨论深度学习中预处理数据的基本流程;后一部分构建了两种全连接网络,用三种不同方案拟合时序数据;并在例程中详细分析误差函数,优化器,网络调参,以及数据反向求导的过程。

数据预处理

本篇使用航空乘客数据AirPassengers.csv,其中包括从1949-1960年每月旅客的数量,程序则用于预测未来几年中每月的旅客数量,数据可从以下Git项目中下载。

https://github.com/aarshayj/analytics_vidhya/blob/master/Articles/Time_Series_Analysis/AirPassengers.csv

1.读取数据

首先,引入必要的头文件,并从文件中读入数据:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

import torch
import torch.nn as nn
from torch.autograd import Variable

df = pd.read_csv('data/AirPassengers.csv')
plt.plot(df['#Passengers'])
plt.show() 

程序输出如下图所示:

771c99ebcee5a40caa0c4ccd6bd0d1a9.png

2.归一化

无论机器学习还是深度学习,使用哪一种框架,归一化都是必要环节。归一化的目标是将每一维特征压缩到一定范围之内,以免不同特征因取值范围不同而影响其权重。非常大或非常小的值搭配上不恰当的学习率,往往使得收敛过慢,或者因每次调整的波动太大最终无法收敛。归一化去除了这些不稳定因素。

归一化的具体做法是将某一列特征转换成均值为 0、标准差为1的数据,在图像处理过程中,也常把0-255之间的颜色值转换为0-1之间的小数。

本例中使用了均值和标准差编写了归一化和反归一化函数:

def feature_normalize(data):
    mu = np.mean(data,axis=0) # 均值
    std = np.std(data,axis=0) # 标准差
    return (data - mu)/std

def feature_unnormalize(data, arr):
    mu = np.mean(data,axis=0)
    std = np.std(data,axis=0)
    return arr * std + mu

3.提取新特征

提取新特征是指从现有特征中提取更多可以代入模型的信息,从而生成新特征,本例中的数据包括两列,第一列“Month”是字符串类型的时间,第二列“#Passengers”是乘客量,也就是需要预测的数据y。下面通过拆分和类型转换,从第一列中提取具体的年“year”和月“mon”,将索引列变为特征“x”,并使用上面定义的函数实现归一化功能。

df['year'] = df['Month'].apply(lambda x: float(x[:4]))
df['mon'] = df['Month'].apply(lambda x: float(x[5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值