keras例子-matchnet
2015CVPR:MatchNet_ Unifying Feature and Metric Learning for Patch-Based Matching
主要是基于patch的图像特征匹配,基于patch的论文有很多了,例如:
Learning to Compare Image Patches via Convolutional Neural Network(也是15年CVPR)
Image Patch Matching Using Convolutional Descriptors with Euclidean Distance
于是打算利用keras实现,但是没有利用这些论文都使用的benchmark data,即含有3个子set的patchdata:Multi-view Stereo Correspondence Dataset。
大体上说,这些文章的思路都是利用一对CNN来提取一对图像特征,然后通过欧氏距离(经典如Saimese网络)或者通过全连接网络(Matchnet)来实现特征的对比,最后通过交叉熵函数来完成优化。

论文很好懂,然后文中也有作者训练好的caffe模型,但是并没有训练过程,所以借此机会利用keras练练手。
先说遇到的问题,keras(0.8.2的theano和1.0.7的keras,目前最新大约是0.9的theano和2.0的keras)利用GPU时总是出现损失为NAN的情况,一开始以为是参数问题,所以修改了权重初始化和Dropout等网络结构,发现任然如下图:

而且当我跑keras自带的examples:mnist_cnn时竟然损失一路为NAN(笑哭/(ㄒoㄒ)/~~),我赶紧换成CPU跑了下,一切正常,正确率又飙到了99%多。我想是不是.theanoc.txt出了问题,我把optimizer=fast_compile删掉(PyCharm跑总是提醒内存问题。。PyCharm确实很占地儿,所以转战Spider),同时把device=gpu改成了gpu0.结果正常了。。如下图:

还没有进一步调参,一直被NAN所困。。而且网络也被我改得面目全非(因为只是测试数据量只有15000),和MatchNet作者的网络出入很大。但是基本思路都是CNN+全连接。。
增大了卷积核,loss下降到0.26,同时训练正确率也在90%以上:

将原数据的10%作为验证集:

再利用keras的模型可视化工具将模型结构可视化,方法见keras中文文档和博客:
from keras.utils.visualize_util import plot
plot(model, to_file='model.png')
如图:

或者如果要在ipython中展示图片:
from IPython.display import SVG
from keras.utils.visualize_util import model_to_dot SVG(model_to_dot(model).create(prog='dot', format='svg'))
效果和上图一样。
keras例子-matchnet的更多相关文章
- 通过keras例子理解LSTM 循环神经网络(RNN)
博文的翻译和实践: Understanding Stateful LSTM Recurrent Neural Networks in Python with Keras 正文 一个强大而流行的循环神经 ...
- Keras官方中文文档:常见问题与解答
所属分类:Keras Keras FAQ:常见问题 如何引用Keras? 如何使Keras调用GPU? 如何在多张GPU卡上使用Keras "batch", "epoch ...
- 【Keras学习】常见问题与解答
Keras FAQ:常见问题 如何引用Keras? 如果Keras对你的研究有帮助的话,请在你的文章中引用Keras.这里是一个使用BibTex的例子 @misc{chollet2015keras, ...
- 转:深度学习斯坦福cs231n 课程笔记
http://blog.csdn.net/dinosoft/article/details/51813615 前言 对于深度学习,新手我推荐先看UFLDL,不做assignment的话,一两个晚上就可 ...
- keras神经网络三个例子
keras构造神经网络,非常之方便!以后就它了.本文给出了三个例子,都是普通的神经网络 例一.离散输出,单标签.多分类 例二.图像识别,单标签.多分类.没有用到卷积神经网络(CNN) 例三.时序预测, ...
- keras 修仙笔记二(ResNet算法例子)
对于牛逼的程序员,人家都喜欢叫他大神:因为大神很牛逼,人家需要一个小时完成的技术问题,他就20分钟就搞定.Keras框架是一个高度集成的框架,学好它,就犹如掌握一个法宝,可以呼风唤雨.所以学keras ...
- Keras学习~第一个例子~跑MNIST
import numpy as npimport gzip import struct import keras as ks import logging from keras.layers impo ...
- Keras手写识别例子(1)----softmax
转自:https://morvanzhou.github.io/tutorials/machine-learning/keras/2-2-classifier/#测试模型 下载数据: # downlo ...
- 基于Keras实现mnist-官方例子理解
前言 久闻keras大名,最近正好实训,借着这个机会好好学一下. 首先推荐一个API,可能稍微有点旧,但是写的是真的好 https://keras-cn.readthedocs.io/en/lates ...
随机推荐
- windows 系统无法安装
1. 提示windows 无法安装到这个磁盘,选中的磁盘具有MBR分区表. Windows cannot be installed to this disk.the selected disk has ...
- 小强学Python+OpenCV之-1.3绘图
目标 今天的课程比较轻松,我们来学习一下OpenCV中几个绘图函数: cv2.line cv2.rectangle cv2.circle 画直线 直接经过前面两节的内容.我想直接上代码应该是可以接受的 ...
- 自学Linux Shell8.1-linux文件系统概述及操作
点击返回 自学Linux命令行与Shell脚本之路 8.1-linux文件系统概述及操作 1. linux支持的文件系统 Windows常用的分区格式有三种,分别是FAT16.FAT32.NTFS格式 ...
- 将一个字符串中的空格替换成“%20”(C、Python)
将一个字符串中的空格替换成“%20” C语言: /* ----------------------------------- 通过函数调用,传地址来操作字符串 1.先计算出替换后的字符串的长度 2.从 ...
- activity window view 关系
1.Activity , Window和View的关系是什么? 跟踪Activity的源码就会发现:Activity.attch() -> PolicyManager -> Policy ...
- CF 681
我太水了...... 这是一场奇差无比的CF. A,看题意有困难,实际上还是很水的. B,枚举 1234567 和 123456 的个数,时间复杂度1e6以下 C,业界毒瘤模拟题.最TM坑的是还要输出 ...
- 02-body标签中相关标签
今日内容: 字体标签: h1~h6.<font>.<u>.<b>.<strong><em>.<sup>.<sub> ...
- python备份网站,并删除指定日期文件
#!/usr/bin/python# Filename: backup_ver1.pyimport osimport timeimport datetime# 1. The files and dir ...
- ivew实现table的编辑保存追加删除
ivew实现table的编辑 例子1 例子2
- The string "--" is not permitted within comments【转】
ibatis中SAXParseException异常:The string "--" is not permitted within comments 这个异常是说sqlmap里面 ...