用Python对KSC数据集处理的一次排错经历
来源:互联网 发布:dht网络 编辑:程序博客网 时间:2024/06/06 09:25
问题的解决
用Python对高光谱数据集进行归一化处理,之前调用自己写的归一化函数对Indian_pines,Salina,PaviaU和Pavia高光谱数据集进行归一化数据处理没有遇到问题,最近需要对KSC数据集进行归一化处理,处理之后对定义的网络结构在KSC数据集上进行调参训练,调了整整两天没有任何提高,分类正确率很差,感觉哪儿肯定出了问题,可是一直在网络训练参数和算法上找问题,没有想到去看数据集,后来在学长的帮助下一起看了数据集,发现是数据集处理的有问题,今天花了基本上一天时间研究了一下这个问题,发现是数据类型的问题,代码:
import numpy as np data, labels = np.array(ksc.data), np.array(ksc.labels) #<1> print data.dtype,labels.dtype
运行结果为:
uint16 uint8
而原来的数据集中的ksc.data,ksc.labels类型为
float float
这说明用代码 <1>对数据进行处理时发生了类型转换,后来查阅了资料,发现np.array函数中不指定数据类型时会发生类型转换:
import numpy as np data, labels = np.array(ksc.data,dtype=np.float), np.array(ksc.labels,dtype=np.float) #<1> data_1x1=scale_to1(data)
而其它四个数据集没有发生错误是之前用了代码<2>之后才进行归一化处理的,也就是说处理的数据类型是float而KSC没有用代码<2>处理的数据类型是int,而我目前的Python版本是Python2,7,其对int型和float型的除法结果不同,这导致了结果的错误:
data_1=np.zeros(data.shape) #<2>data_1=datadata_1x1=scale_to1(data_1)
我做了如下实验:
data_1=np.zeros(data.shape)print data_1.dtype
运行结果为:
float64
这说明不指定类型时np.zeros的类型为float,所以才没有发生错误。
总结
为了解决这个问题,所做的项目三天没有任何进展,最后在学长的帮助下还是解决了,这提醒我在遇到不知道怎么解决的问题或者是明显是错的问题时,一定要回到问题的原点进行重新思考,就拿这个问题来说,就是要回到原点思考数据集的问题,这样才解决了问题。然后基础无比重要,要重视基础的学习,最后还是实践,绝知此事要躬行,每次解决问题,须躬行的感触会深一点。
- 用Python对KSC数据集处理的一次排错经历
- 一次排错经历
- 一次使用OCI的排错经历
- 一次冗长繁琐的排错经历
- JWS的一次排错经历
- openstack虚拟机无法启动的一次排错经历
- 用python写的一次爬虫经历
- 排错的经历
- 数据同步的一次经历
- 从一次Windows网络编程排错经历中得出的一个可靠拆包算法
- 从一次Windows网络编程排错经历中得出的一个可靠拆包算法
- 记一次RSA非对称算法的排坑经历
- 一次nginx 502 & mysql not contect 排错经历
- 记一次Linuxx下驱动安装排错经历
- 记一次排错经历-vivo手机标识问题
- python用urllib2处理超时的经历
- 一次"惊险"的数据恢复经历
- 用python对文本格式的数据进行统计处理
- 546. Remove Boxes
- 论文笔记 Bootstrapping Face Detection with Hard Negative Examples
- 如何从Eclipse导入github上的项目源码
- 一致性HASH算法
- 在HTML中用iframe标签引入另一个页面
- 用Python对KSC数据集处理的一次排错经历
- 我的笔记 BorderLayout 边界布局管理器
- 百度杯”CTF比赛(十二月场)
- union 以及sizeof
- C语言之解析局部变量返回
- STS+Maven+Git+Velocity
- P1120 小木棍 [数据加强版]
- hash——BZOJ4236 JOIOJI
- 我的笔记 网格布局 GridLayout