IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 4月27工作总结:loss为nan问题的解决、时间序列数据的加载以及滑动窗口的使用 -> 正文阅读

[人工智能]4月27工作总结:loss为nan问题的解决、时间序列数据的加载以及滑动窗口的使用

工作内容:

一、 在公共数据集中测试自己搭建的一维CNN模型。
二、 刘老师开会教授做PPT技巧,并且自己拿挑战杯PPT进行练手。

出现的问题:

针对一:
在训练过程中出现LOSS为Nan的情况。

解决过程:

针对一:
初步怀疑是学习率lr设置不得当,导致的梯度爆炸,将lr设置为0,发现此问题依旧存在;接下来目光转向数据集,数据集中可能存在空值。将batch_size设置为1,而且dataloader中shuffle参数设置为True,进行训练时观察第几步出现loss为nan的情况,调试进入观察输入值,发现输入数据中存在空值,故问题排查出来。
(由于是pandas工具包加载的数据集,所以用df.isnull())
由于数据集的加载是用pandas工具包直接加载的csv文件,若对空值数据进行处理,有以下几种办法:
https://zhuanlan.zhihu.com/p/457718042
1、 删除空值:df.dropna()
2、 填补空值:df.fillna()

其他收获:

一、发现一种简单的打包时间序列CSV格式数据集加载进模型的方法:
1、建立自己的数据集类
2、在类中直接加载csv数据集
3、对数据集样本的划分放在__getitem__()函数中

二、学到一种新的利用滑动窗口处理时间序列数据的方法:
借用__getitem__(self,idx)函数的特殊性质,idx为dataloader()函数每次取样本的索引,我们只需在此索引上加上5(方便说明所以选取5),即可得到一个序列长度为5的样本,即:5行数据=一个样本。注意:要在数据集长度的基础上减去5,防止末尾的idx取不到5个长度的值。
样本标签值的处理办法是(假设类别为3,且经过one-hot编码):
1、如果在类别交接处,比如:
2、先选取5条数据的标签值:y = self.df.iloc[idx: idx + 5, 3:].values

100
100
100
001
001

3、对以上标签数据按列相加:z = np.sum(y, axis=0)

301

4、利用np.argmax()返回以上数据数值最大处的索引:ind = np.argmax(z)
ind的值为0,即索引0处的值最大。
5、创建一个全0数组,大小与热编码后的标签数据一样:label = np.zeros_like(self.df.iloc[0, 3:].values),如下所示:

000

6、将label的ind索引处设置为1,即此样本的标签就得到了。是5条数据中标签最多的作为此条样本的标签。label[ind] = 1

100

7、除了在__getitem__()函数中返回数据x,x = self.df.iloc[idx: idx + 5, : 3].values
还要返回label。
8、那么,一个csv格式的时间序列数据就可以打包成dataset数据集加载进模型中进行训练了。

class IMUDataset(Dataset):
    def __init__(self, mode='test', transform=None):
        if mode == 'train':
        	# 直接加载csv数据
            self.df = pd.read_csv('Data_pre/train.csv', header=0, index_col=0)
            # 自己处理数据中空数据的方法
            self.df = self.df.fillna(method='ffill',axis=0)
        elif mode == 'test':
            self.df = pd.read_csv('Data_pre/test.csv', header=0, index_col=0)
            self.df = self.df.fillna(method='ffill',axis=0)
        elif mode == 'val':
            self.df = pd.read_csv('Data_pre/val.csv', header=0, index_col=0)
            self.df = self.df.fillna(method='ffill',axis=0)
        self.transform = transform
        self.df = self.df.reset_index()

    def __len__(self):
        return len(self.df)

    def __getitem__(self, idx):
    	# 在此处利用pandas工具包中的函数对csv数据进行处理,一个一个的划分样本。由于__getitem__函数的特殊性,idx为取值索引,所以利用此索引在csv数据中用iloc函数选取特定的行。
        # 对标签的处理:由于利用滑动窗口选取长度为80的样本数据,在类别交接处,80个行数据中肯定会存在两种类别,这个有两种标签的样本怎么处理?肯定是选取80个行数据中标签数多的作为此样本的标签值。比如:80个行数据中,有70个行数据标签为1,10个为2,肯定选取1作为样本标签。接下来就是怎么统计。
        # 1、首先,y值为80个行数据的标签值,也就是某个样本中所有行数据的标签值,即80*6 (6分类,已进行hot编码)。
        # 利用np.sum对y进行按列相加,用np.argmax()返回数值最大的索引,此索引即80个行数据中标签值最多的标签索引。计为ind
        # 创建一个label变量,用来存标签值,将1赋值给label的ind索引处即完成此样本的标签选定。
        y = self.df.iloc[idx: idx + 80, 3:].values
        ind = np.argmax(np.sum(y, axis=0))
        label = np.zeros_like(self.df.iloc[0, 3:].values)
        label = label.astype('float')
        label[ind] = 1
        
        x = self.df.iloc[idx: idx + 80, : 3].values
        x = x.astype('float')
        assert (x.shape == (80, 3))
        assert (label.shape == (6,))
        return x, label
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:42:53  更:2022-04-30 08:43:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:59:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码