theano中对图像进行convolution 运算
(1) 定义计算过程中需要的symbolic expression
"""
定义相关的symbolic experssion
"""
# convolution layer的输入,根据theano,它应该是一个4d tensor
input = T.tensor4(name='input')
# 共享权值W,它的shape为2,3,9,9
w_shp = (2,3,9,9);w_bound = numpy.sqrt(3*9*9)
W = theano.shared(numpy.asarray(rng.uniform(low= -1.0/w_bound, high = 1.0/w_bound,size=w_shp),dtype=input.dtype),name='W')
# 利用卷积核W对input进行卷积运算
conv_out = conv.conv2d(input,W)
# 偏执向量b
b_shp = (2,) # b是一个只有1个元素2的tuple
b = theano.shared(numpy.asarray(rng.uniform(low= -.5, high = .5,size=b_shp),dtype=input.dtype),name='b')
# 计算sigmoid函数
output = T.nnet.sigmoid(conv_out+b.dimshuffle('x',0,'x','x'))
# 输入输出function
f = theano.function([input],output)
(2)利用真实数据计算
"""
开始使用具体数值
"""
# 读入图像
img = Image.open('3wolfmoon.jpg', mode='r')
# 将输入图像存入在array中
img = numpy.array(img,dtype='float64')/256
# 对输入图像进行reshape
img_=img.transpose(2,0,1).reshape(1,3,639,516)
# 利用convolution kernel对输入图像进行卷积运算
filtered_img=f(img_)
(3)绘制需要显示的图像
"""
绘制图像
"""
# 显示原始图像
pylab.subplot(1,3,1);pylab.axis('off');pylab.imshow(img);pylab.gray()
# 显示filter后的图像的channel1
pylab.subplot(1,3,2);pylab.axis('off');pylab.imshow(filtered_img[0,0,:,:])
# 显示filter后的图像的channel2
pylab.subplot(1,3,3);pylab.axis('off');pylab.imshow(filtered_img[0,1,:,:])
# 显示
pylab.show()
整个代码段
# -*- coding: utf-8 -*- # 导入相关的模块
import theano
from theano import tensor as T
from theano.tensor.nnet import conv
import numpy
import pylab
from PIL import Image # 产生随机数的种子
rng = numpy.random.RandomState(23455) """
定义相关的symbolic experssion
"""
# convolution layer的输入,根据theano,它应该是一个4d tensor
input = T.tensor4(name='input')
# 共享权值W,它的shape为2,3,9,9
w_shp = (2,3,9,9);w_bound = numpy.sqrt(3*9*9)
W = theano.shared(numpy.asarray(rng.uniform(low= -1.0/w_bound, high = 1.0/w_bound,size=w_shp),dtype=input.dtype),name='W')
# 利用卷积核W对input进行卷积运算
conv_out = conv.conv2d(input,W)
# 偏执向量b
b_shp = (2,) # b是一个只有1个元素2的tuple
b = theano.shared(numpy.asarray(rng.uniform(low= -.5, high = .5,size=b_shp),dtype=input.dtype),name='b')
# 计算sigmoid函数
output = T.nnet.sigmoid(conv_out+b.dimshuffle('x',0,'x','x'))
# 输入输出function
f = theano.function([input],output) """
开始使用具体数值
"""
# 读入图像
img = Image.open('3wolfmoon.jpg', mode='r')
# 将输入图像存入在array中
img = numpy.array(img,dtype='float64')/256
# 对输入图像进行reshape
img_=img.transpose(2,0,1).reshape(1,3,639,516)
# 利用convolution kernel对输入图像进行卷积运算
filtered_img=f(img_) """
绘制图像
"""
# 显示原始图像
pylab.subplot(1,3,1);pylab.axis('off');pylab.imshow(img);pylab.gray()
# 显示filter后的图像的channel1
pylab.subplot(1,3,2);pylab.axis('off');pylab.imshow(filtered_img[0,0,:,:])
# 显示filter后的图像的channel2
pylab.subplot(1,3,3);pylab.axis('off');pylab.imshow(filtered_img[0,1,:,:])
# 显示
pylab.show()
theano中对图像进行convolution 运算的更多相关文章
- 原创教程“ActionScript3.0游戏中的图像编程”開始连载啦!
经过近两年的不懈努力,笔者的原创教程"ActionScript3游戏中的图像编程"最终在今日划上了完美的句号!这其中记录着笔者多年来在游戏制作,尤其是其中图像处理方 ...
- Theano入门笔记1:Theano中的Graph Structure
译自:http://deeplearning.net/software/theano/extending/graphstructures.html#graphstructures 理解Theano计算 ...
- theano中的scan用法
scan函数是theano中的循环函数,相当于for loop.在读别人的代码时第一次看到,有点迷糊,不知道输入.输出怎么定义,网上也很少有example,大多数都是相互转载同一篇.所以,还是要看官方 ...
- PS中的图像知识
图像处理对于前端工作来说是一个不能回避的问题,ps技术也是我们必备的技能.用法可以在使用中不断的熟练,但针对前端技术本身的一些知识点,需要我们平时不断的积累才能够在使用中不出现问题. 如今的办公,已经 ...
- theano中的dimshuffle
theano中的dimshuffle函数用于对张量的维度进行操作,可以增加维度,也可以交换维度,删除维度. 注意的是只有shared才能调用dimshuffle() 'x'表示增加一维,从0d sca ...
- (转)原始图像数据和PDF中的图像数据
比较原始图像数据和PDF中的图像数据,结果见表1.1.表1.1中各种“解码器”的解释见本文后续的“PDF支持的图像格式”部分,“PDF中的图像数据”各栏中的数据来自开源的PdfView.如果您有兴趣查 ...
- Android中解决图像解码导致的OOM问题
Android中解决图像解码导致的OOM问题 原文链接:http://blog.csdn.net/zjl5211314/article/details/7042017
- 如何在图像处理工具包ImagXpress中对图像进行捕捉、复制和粘贴
如何在在ImagXpress中进行图像的捕捉. 复制和粘贴呢?下面详细来看一下,在多种情况下,图和实现这些操作. 捕捉屏幕图像 捕捉通过ImageXView窗口绑定的屏幕范围,以及保存到一个Image ...
- C# 在SQLite数据库中存储图像 z
C# 在SQLite数据库中存储图像 更多 0 C# SQLite 建表语句 CREATE TABLE [ImageStore]([ImageStore_Id] INTEGER NOT NULL ...
随机推荐
- [C#] c# 验证手机号码 最新的17手机号
/// <summary> /// 校验手机号码是否符合标准. /// </summary> /// <param name="mobile"> ...
- [PHP] csv to xml
<?php error_reporting(E_ALL | E_STRICT); ini_set('display_errors', true); ini_set('auto_detect_li ...
- tabhost中setup()和setup(LocalActivityManager activityGroup)
如果用系统默认的tabhost时, 直接用getTabhost()初始化,整个类继承tabActivity. 当没有选择系统tabhost默认id时,而是自己定义的id时,必须使用 findViewB ...
- PureMVC(JS版)源码解析(六):MacroCommand类
上一篇博客,我们讲解了SimpleCommand类,接下来我们看一下与SimpleCommand类很相似的MacroCommand类. MacroCommand类和SimpleCommand类一样,都 ...
- java Thread.join()
thread1.join()方法阻塞调用此方法的线程,直到线程thread1完成,此线程再继续. 通常用于在main()主线程内,等待其它线程完成再结束main()主线程 @Test /** * ou ...
- apache的一些基本配置
Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改. 主站点的配置(基本配置) 基本配置: ServerRoot "/mnt/softw ...
- not exists 跟not in 纪念一下
- MITMF使用import error
安装问题: 1.ubuntu 14.04.安装使用capstone时候,提示出现import error:ERROR: fail to load the dynamic library. 解决方法:将 ...
- Android - 服务器json数据交互.
一,服务器端 服务器端使用的是Servlet,封装json对象使用的 'json-lib-2.2.2-jdk15.jar,ezmorph-1.0.4.jar,commons-logging-1.1.j ...
- oracle sql语句
一.ORACLE的启动和关闭1.在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su - oracle a.启动ORACLE系统oracle>svrmgrlSVRM ...