keras 的 Deeplabv3+ 实现遇到的问题
代码大佬都已经写好了,具体参考:https://github.com/bonlime/keras-deeplab-v3-plus
git clone 下来以后,按照指南要训练自己的数据集,只要设置好自己的数据大小和类别就可以了
from model import Deeplabv3
deeplab_model = Deeplabv3(input_shape=(384, 384, 3), classes=4)
问题1:我的数据集不是一张张小图片,而是一个大的遥感影像tif,如何训练这个数据
解决:用 gdal 读取得到它的 np.array,再通过生成器一小块一小块输入
问题2:但是这样的生成器无法打乱顺序,把多景影像标签和图像 zip 起来后也无法用 random.shuffle 打乱图片顺序
解决:现在只能每次都按顺序读入,应该对训练影响不大
设想:后续想法是设置一个随机数列,根据这个随机数列读取指定大小范围,这样是把步长变为了1,会有好多样本
问题3:验证集和训练集只能按 tif 分,如何能随机取
设想:随机数列解决
问题4:运行一直报错,各种错,先后有
module 'tensorflow._api.v1.compat' has no attribute 'v1'
unsupported operand type(s) for /: 'Dimension' and 'float'
解决:直接 git clone 下来的是用最新版 tf2.0 写的,需要升级自己的 tf 或者用作者之前版本的实现,在这里用了之前版本的 keras 实现,在命令行输入一下代码
git clone https://github.com/bonlime/keras-deeplab-v3-plus/
cd keras-deeplab-v3-plus/
git checkout 714a6b7d1a069a07547c5c08282f1a706db92e20
问题5:写的生成器生成的标签最后一维是1,导致运行一直报错,维度不匹配
解决:这个写的是用了 one-hot 编码的,需要把标签转换成 one-hot,用 “ from keras.utils import to_categorical ”,to_categorical(x, num_classes=n)把 x 里从 0 到 n-1的值根据大小扩展到 n 维,若最大值和类别数目不同会报错
问题6:评价指标 loss 和各种系数不在正常范围内
解决:一开始以为是 one-hot 编码问题,一直尝试用 k.argmax 去得到1维的 tensor,死活弄不出来,报错有:数据类型不对,用 K.cast 强制转换解决,tensor 不能和数值相加,用argmax导致梯度无法回流等。睡了一觉想想不能用 argmax,他就是要在每一个维度上计算出相应指标再求平均,原来在不是 one-hot 编码里用的函数都还是对的,那问题出在老版本里最后没有用激活函数,给他加个激活函数以后一切都正常了。
问题7:作者说没有实现 weight_decay,需要的自己加
还未解决:不知道去哪加
keras 的 Deeplabv3+ 实现遇到的问题的更多相关文章
- [Keras] Develop Neural Network With Keras Step-By-Step
简单地训练一个四层全连接网络. Ref: http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/ 1 ...
- keras 中如何自定义损失函数
http://lazycoderx.com/2016/10/09/keras%E4%BF%9D%E5%AD%98%E6%A8%A1%E5%9E%8B%E6%97%B6%E4%BD%BF%E7%94%A ...
- keras安装
找对工具真的很重要,周末和学霸折腾了一天才装了几个包,问了同事找了一个方便的包,装起来不要太快啊.二十分钟全部搞定. 一.Anaconda 真是大杀器,牛到飞起来,一键部署,所有常用的机器学习包全部包 ...
- ubuntu系统theano和keras的安装
说明:系统是unbuntu14.04LTS,32位的操作系统,以前安装了python3.4,现在想要安装theano和keras.步骤如下: 1,安装pip sudo apt-get install ...
- neurosolutions 人工神经网络集成开发环境 keras
人工神经网络集成开发环境 : http://www.neurosolutions.com/ keras: https://github.com/fchollet/keras 文档 http ...
- Keras官方Example里Mnist-cnn的调试运行
问题:老板让测试运行Keras官网里的Mnist-cnn.py,结果从下载数据就是一路坑-- 当前环境:Ubuntu12.04.python2.7.Keras 1.1.1(不知道这个版本号对不对,在启 ...
- [Keras] mnist with cnn
典型的卷积神经网络. Keras傻瓜式读取数据:自动下载,自动解压,自动加载. # X_train: array([[[[ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0. ...
- [Keras] Install and environment setting
Documentation: https://keras.io/ 1. 利用anaconda 管理python库是明智的选择. conda update conda conda update anac ...
- linux install Theano+Tensorflow+Keras
安装过程中,网络状态一定要好,如果安装过程中出现time out的提示信息,今天就可以洗洗睡啦,等明天网络状态好的时候再安装. 安装过程出现不知名的错误的时候,执行第一步,update一下 1.#up ...
随机推荐
- C#7.0新特性
前言 微软昨天发布了新的VS 2017 ..随之而来的还有很多很多东西... .NET新版本 ASP.NET新版本...等等..太多..实在没消化.. 分享一下其实2016年12月就已经公布了的C#7 ...
- 认识浏览器请求头User-Agent
一.定义 User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA. 它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本.操 ...
- Dockerfile 中的 COPY 与 ADD 命令
Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景. Build 上下文的概念 在使用 docker ...
- Spring拓展接口之BeanFactoryPostProcessor,占位符与敏感信息解密原理
前言 开心一刻 一只被二哈带偏了的柴犬,我只想弄死隔壁的二哈 what:是什么 BeanFactoryPostProcessor接口很简单,只包含一个方法 /** * 通过BeanFactoryPos ...
- 【c#】队列(Queue)和MSMQ(消息队列)的基础使用
首先我们知道队列是先进先出的机制,所以在处理并发是个不错的选择.然后就写两个队列的简单应用. Queue 命名空间 命名空间:System.Collections,不在这里做过多的理论解释,这个东西非 ...
- [MySQL] 测试where group by order by的索引问题
1. select * from test where a=xx group by b order by c 如何加索引 CREATE TABLE `index_test` ( `id` int ...
- C# 在Word中添加表格的方法
表格是组织整理数据的一种重要手段,应在生活中的方方面面.在Word文档中将繁杂的文字表述内容表格化,能快速.直接地获取关键内容信息.那么,通过C#,我们也可以在Word文档中添加表格,这里将介绍两种不 ...
- Dubbo+ZK与Eureka注册中心比较
Eureka可以很好的应对网络故障导致部分节点失去联系的情况,而不会像zk那样因为选举导致整个集群不可用 dubbo + zk 当向注册中心查询服务注册列表时,可以容忍注册中心返回的是几分钟以前的注册 ...
- ELK 日志采集 实战教程
概要 带着问题去看教程: 不是用logstash来监听我们的日志,我们可以使用logback配置来使用TCP appender通过TCP协议将日志发送到远程Logstash实例. 我们可以使用Logs ...
- 关于Xcode9.0版本模拟器Reset重置操作变更