(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 运算的更多相关文章

  1. 原创教程“ActionScript3.0游戏中的图像编程”開始连载啦!

            经过近两年的不懈努力,笔者的原创教程"ActionScript3游戏中的图像编程"最终在今日划上了完美的句号!这其中记录着笔者多年来在游戏制作,尤其是其中图像处理方 ...

  2. Theano入门笔记1:Theano中的Graph Structure

    译自:http://deeplearning.net/software/theano/extending/graphstructures.html#graphstructures 理解Theano计算 ...

  3. theano中的scan用法

    scan函数是theano中的循环函数,相当于for loop.在读别人的代码时第一次看到,有点迷糊,不知道输入.输出怎么定义,网上也很少有example,大多数都是相互转载同一篇.所以,还是要看官方 ...

  4. PS中的图像知识

    图像处理对于前端工作来说是一个不能回避的问题,ps技术也是我们必备的技能.用法可以在使用中不断的熟练,但针对前端技术本身的一些知识点,需要我们平时不断的积累才能够在使用中不出现问题. 如今的办公,已经 ...

  5. theano中的dimshuffle

    theano中的dimshuffle函数用于对张量的维度进行操作,可以增加维度,也可以交换维度,删除维度. 注意的是只有shared才能调用dimshuffle() 'x'表示增加一维,从0d sca ...

  6. (转)原始图像数据和PDF中的图像数据

    比较原始图像数据和PDF中的图像数据,结果见表1.1.表1.1中各种“解码器”的解释见本文后续的“PDF支持的图像格式”部分,“PDF中的图像数据”各栏中的数据来自开源的PdfView.如果您有兴趣查 ...

  7. Android中解决图像解码导致的OOM问题

    Android中解决图像解码导致的OOM问题 原文链接:http://blog.csdn.net/zjl5211314/article/details/7042017

  8. 如何在图像处理工具包ImagXpress中对图像进行捕捉、复制和粘贴

    如何在在ImagXpress中进行图像的捕捉. 复制和粘贴呢?下面详细来看一下,在多种情况下,图和实现这些操作. 捕捉屏幕图像 捕捉通过ImageXView窗口绑定的屏幕范围,以及保存到一个Image ...

  9. C# 在SQLite数据库中存储图像 z

    C# 在SQLite数据库中存储图像 更多 0 C# SQLite   建表语句 CREATE TABLE [ImageStore]([ImageStore_Id] INTEGER NOT NULL ...

随机推荐

  1. Python 3语法小记(六)条件、循环和assert、pass、del

    条件: if 条件:     语句块 elif:     语句块 else:     语句块 elif 表示 else if 这居然是合法的!!!1 < x < 2!!! >> ...

  2. asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0" 提供程序"

    笔者在项目中做做了一个从Excel表格中导入数据的模块.大体上asp.net项目中导入Excel大体分成三类: 1)采用c#内置方案System.Data.OleDb(限制较小, 通用) 2)采用Ex ...

  3. DataGridView减少闪烁的解决办法

    Reducing flicker, blinking in DataGridView http://www.codeproject.com/Tips/390496/Reducing-flicker-b ...

  4. Microsoft SyncToy 文件同步工具

    Microsoft SyncToy SyncToy 是由 微软 推出的一款免费的文件夹同步工具.虽然名字中有一个 Toy,但是大家可千万不要误以为它的功能弱爆了.实际上,我感觉这款软件还真是摆脱了微软 ...

  5. C++ Virtual介绍 分类: C/C++ 2015-06-16 21:36 26人阅读 评论(0) 收藏

    参考链接:http://www.cnblogs.com/xd502djj/archive/2010/09/22/1832912.html 学过C++的人都知道在类Base中加了Virtual关键字的函 ...

  6. [Node.js] Node.js Buffers

    >> node >>fs.readFile('finnish.txt', function(err,data){ console.log(data); }); // Outpu ...

  7. 软件项目量化管理(CMMI高成熟度)实践经验谈——之项目管理过程策划篇

    续:软件项目量化管理(CMMI高成熟度)实践经验谈--之概述篇 二.项目管理过程 软件开发项目管理过程,从项目全视角来看,分为售前.售中.售后等三个大的阶段.本文所谈的是售中阶段项目管理过程,在售中阶 ...

  8. QTreeWidget实现动态加载本地文件系统

    QT之前没有接触过,之所以做这个也是被临时拉去GoldenFarm组去做渲染的客户端:还别说,虽说是第一次,做出来的这个东西倒是挺让我满意的.先说一下具体需求,然后再上图吧: 渲染时在选择场景文件时, ...

  9. CCEditBox用法

    1.以下是CCEditBox的相关函数和类型说明: /* 编辑框的一些函数 setText("字符串"); //设置文本 setFontColor(color); //设置文本颜色 ...

  10. PureMVC(JS版)源码解析(三):Observer类

          上一篇博客中,我们讲到了Notification类(消息类),Notification(消息)是连接观察者(observer)和通知者(notifier)之间的桥梁.这一篇博客,主要是在代 ...