热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据集和神经网络共同进步之代码之路

如下代码的不断调整可使得神经网络和数据集共同进步5分类成功分成了7分类,也就是说模型的能力将不属于该类的分出去l但是人们还是利用模型将这些图片强行的5分类,那么一定地不准确的也

如下代码的不断调整可使得神经网络和数据集共同进步

在这里插入图片描述5分类成功分成了7分类,也就是说模型的能力将不属于该类的分出去l
但是人们还是利用模型将这些图片强行的5分类,那么一定地不准确的

也就是说本来这个图片既不是0分类和1分类,但是人们训练好模型后
识别出来只有5个结果,自然就只有5个结果,虽然这个图片哪个都不是但是还是会被认为是5个类别的一个,也就是说模型没有错而是,你强行的将其范围分类方位给缩小了也就是说你提供的数据标注,只是你所想到的那几类,但是模型完全可以将你的这种标注的所有分类都找出来
但是如果你没有可视化的话,你却不知道还有几类你根本没有想到
但是模型想到l,
所以说,模型是真的能分开,而是人类的意愿导致了模型的错误,
所以接下来将纠正这样的错误,采取模型和数据集合共同进步的方式
来解决大量的标注时间和模型达不到人类想要的结果

上面总结一句话,数据集中有一些是我们不需要的类的数据
下面将其剔除

如下图是训练数据网络能让图片分类的真实分布可以看到这个数据集应该标注为7类
而不是5类
所以,将7类的分割线上的任意两个点的坐标带入我的数据集矫正类别方法中,将数据级分为7类,去除我们不想要的类别,继续使用新标注的数据级或者说使用去除杂类的数据集合
在这里插入图片描述放入自己的图片到项目中,更改readmist中的数据处理代码
生成图片标签和路径的txt文件
首先执行代码的train
训练后执行readminst中的数据人工分类cls_data()
会得到如图类似的分类在这里插入图片描述
在使用鼠标在空白处选取两个点作为分割线(顺时针或者反之,分割线与分割线要挨着),
这样的格式

[3.35,-6.27,10.72,-22.7,8.56,-2.69,21.89,-3.40,9.37,2.08,22.34,4.95,7.75,6.38,17.57,15.95,6.12,9.25,12.28,19.05,-1.25,7.34,-8.1,21.92,-3.15,-5.79,-9.0,-17.15]

记录完后关闭图像,
将上面的数据输入到控制台
回车后就会生成,一个json文件,文件中已经将图片的地址按照上面的分割线分别存在列表中,最后只需要自己将路径读取出来再写一个
图片分别存放在相应的文件中即可完成,人工分类

代码在
https://download.csdn.net/download/weixin_32759777/12328521

可以使用如下代码进行人工分割

def get_path_and_dir(path):with open(path,"r") as f:data=json.load(f)for i ,one_path_list in enumerate(data["new_path_data"]):makedirs("image"+str(i))for one_path in one_path_list:with open(one_path,"rb") as f:data=f.read()with open("image"+str(i)+"/"+one_path.split("/")[-1],"wb") as f:f.write(data)if __name__ == '__main__':# cls_data()get_path_and_dir("/home/chenyang/PycharmProjects/arc_face/new_data_path.json")

在这里插入图片描述分类后发现图片不是按照分割线分开的而是按照上图这样分开的
检查后发现图片每个文件中都前面的都一样,也就是说我们的cls_data()
写的有问题
在这里插入图片描述
问题出现的原因就是所有的图片都会小于AB两条线

所以所有的造成了混淆看上去就像同心圆
实际的同心圆应该如下图
所示
在这里插入图片描述
所以重写
cls_data()

在这里插入图片描述基本就是分为四种情况,按照上图的方向

c_x_0起点分割线上的外点x减内点x
c_x_1终点分割线上的外点x减内点x
x_0_1 两个分割线焦点x
带入x值到起点分割线y的值real_0
带入x值到终点分割线y的值real_1
y实际值

c_x_0 >x_0_1
c_x_1 >x_0_1
y y>real_0

c_x_1 real_1y>real_0

c_x_0 c_x_1 >x_0_1
y y

c_x_1 y>real_1
y

代码如下


def cls_data():data&#61;dis_data()draw_json(data[0],data[1])print("请在图中输入分割线的坐标(线上两个点坐标共计四个值),保留两位小数")print("输入的线要按照分割的顺序输入")line_data&#61;json.loads(input("请按照说明输入数据这样的格式[1,2,3,4,5,65]"))line_data&#61;numpy.array(line_data).reshape(-1,4).tolist()k_b_list&#61;[]cls_index_path&#61;[]for xy in line_data:k_b &#61; y_kx_b(xy)cls_index_path.append([])k_b_list.append(k_b)k_b_list.append(k_b_list[0])cls_index_path.append([])index_x&#61;-1set_path&#61;[]for x,y in zip(data[0],data[1]):try:index_x&#43;&#61;1k_b_index&#61;0for _ in range(len(k_b_list)):k_b_index&#43;&#61;1real_0&#61;k_b_list[k_b_index-1][0]*x&#43;k_b_list[k_b_index-1][1]real_1&#61;k_b_list[k_b_index][0]*x&#43;k_b_list[k_b_index][1]c_x_0&#61;k_b_list[k_b_index-1][2]c_x_1&#61;k_b_list[k_b_index][2]x_0_1&#61;(k_b_list[k_b_index][1]-k_b_list[k_b_index-1][1])/(k_b_list[k_b_index-1][0]-k_b_list[k_b_index][0])# c_x_0大于x_0_1的y>real_0否则y# 当c_x_0 >x_0_1 ,c_x_1 >x_0_1的yreal_1# 当c_x_0 x_0_1的yreal_1if c_x_0 >x_0_1:if c_x_1 >x_0_1:if y>real_0 and y<real_1:if data[2][data[0].tolist().index(x)] in set_path:continueelse:set_path.append(data[2][data[0].tolist().index(x)])cls_index_path[k_b_index].append(data[2][data[0].tolist().index(x)])else:if y>real_0 and y>real_1:if data[2][data[0].tolist().index(x)] in set_path:continueelse:set_path.append(data[2][data[0].tolist().index(x)])cls_index_path[k_b_index].append(data[2][data[0].tolist().index(x)])else:if c_x_1 > x_0_1:if y<real_0 and y<real_1:if data[2][data[0].tolist().index(x)] in set_path:continueelse:set_path.append(data[2][data[0].tolist().index(x)])cls_index_path[k_b_index].append(data[2][data[0].tolist().index(x)])else:if y<real_0 and y>real_1:if data[2][data[0].tolist().index(x)] in set_path:continueelse:set_path.append(data[2][data[0].tolist().index(x)])cls_index_path[k_b_index].append(data[2][data[0].tolist().index(x)])print(index_x)except:passwith open("new_data_path.json", "w", encoding&#61;"utf-8") as f:json.dump({"new_path_data":cls_index_path}, f, ensure_ascii&#61;False)# q&#61;[-4.70, -6.42, -15.51, -27.40,1.92, -2.72,7,14,2.21, 3.45,8.1, 15.37,-1.87, 3.86,-7.82, 17.64,-6.75, 7.35,-11.03,12.90,-9.57, 4.88,-19.60, 7.14,-8.40, -1.07,-21.84, -1.28]#将坐标q&#61;[3.35,-6.27,10.72,-22.7,8.56,-2.69,21.89,-3.40,9.37,2.08,22.34,4.95,7.75,6.38,17.57,15.95,6.12,9.25,12.28,19.05,-1.25,7.34,-8.1,21.92,-3.15,-5.79,-9.0,-17.15,-3.42,-9.62,-9.18,-28]

在这里插入图片描述


推荐阅读
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • IneedtofocusTextCellsonebyoneviaabuttonclick.ItriedlistView.ScrollTo.我需要通过点击按钮逐个关注Tex ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 本文详细介绍如何在VSCode中配置自定义代码片段,使其具备与IDEA相似的代码生成快捷键功能。通过具体的Java和HTML代码片段示例,展示配置步骤及效果。 ... [详细]
  • 解决Anaconda安装TensorFlow时遇到的TensorBoard版本问题
    本文介绍了在使用Anaconda安装TensorFlow时遇到的“Could not find a version that satisfies the requirement tensorboard”错误,并提供详细的解决方案,包括创建虚拟环境和配置PyCharm项目。 ... [详细]
  • 本文详细介绍了Flask项目的配置方法,包括DEBUG模式的设置和配置文件的使用,帮助开发者更好地理解和应用Flask框架。 ... [详细]
  • 本文介绍如何在PostgreSQL数据库中正确插入和处理JSON数据类型,确保数据完整性和避免常见错误。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • This pull request introduces the ability to provide comprehensive paragraph configurations directly within the Create Note and Create Paragraph REST endpoints, reducing the need for additional configuration calls. ... [详细]
author-avatar
捕鱼达人qq怎么刷金币
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有