首先生成3×3×3的黑色图片
"""
生成3×3×3黑色图像
"""
def produce_image():size = 3x, y = ogrid[:size, :size]  # 第一部分产生多行一列 第二部分产生一行多列z = x + yz = z[:, :, newaxis]  # 增加第三维# print(z)img = repeat(z, 3, 2)/12  # 在第三维上复制两遍# print(img.shape)# print(img)io.imshow(img, interpolation='none')io.show()return img

打印结果:

双线性插值反卷积代码如下:

"""
生成3×3×3黑色图像
"""
def produce_image():size = 3x, y = ogrid[:size, :size]  # 第一部分产生多行一列 第二部分产生一行多列z = x + yz = z[:, :, newaxis]  # 增加第三维# print(z)img = repeat(z, 3, 2)/12  # 在第三维上复制两遍# print(img.shape)# print(img)io.imshow(img, interpolation='none')io.show()return img"""
上采样 双线性插值生成卷积核
"""
def upsampling_bilinear():#确定卷积核大小def get_kernel_size(factor):return 2*factor-factor%2# 创建相关矩阵def upsample_filt(size):factor=(size+1)//2if size%2==1:center=factor-1else:center=factor-0.5og=np.ogrid[:size,:size]# print(og)# print(og[0])# print(og[1])return (1-abs(og[0]-center)/factor)*(1-abs(og[1]-center)/factor)#进行上采样卷积核def bilinear_upsample_weights(factor,number_of_classes):filter_size=get_kernel_size(factor)weights=np.zeros((filter_size,filter_size,number_of_classes,number_of_classes),dtype=np.float32)upsample_kernel=upsample_filt(filter_size)# print(upsample_kernel)for i in range(number_of_classes):weights[:,:,i,i]=upsample_kernel# print(weights[:,:,i,i])# print(weights)# print(weights.shape)return weightsweights=bilinear_upsample_weights(3,3)return weights
if __name__ == '__main__':import tensorflow as tf# upsampling()# upsampling_bilinear()image=produce_image()img = tf.cast(image, dtype=tf.float32)img = tf.expand_dims(img, 0)  # 增加维度#产生卷积核kerenel=upsampling_bilinear()#反卷积处理res=tf.nn.conv2d_transpose(img,kerenel,output_shape=[1,9,9,3],strides=[1,3,3,1],padding='SAME')with tf.Session() as sess:img = sess.run(res)io.imshow(img[0, :, :, :] , interpolation='none')io.show()

打印结果:能较好恢复原图像

tensorflow:双线性插值反卷积相关推荐

  1. tensorflow实现反卷积

    先看ogrid用法 from numpy import ogrid,repeat,newaxis from skimage import io import numpy as np size=3 x, ...

  2. 通过图+代码来理解tensorflow中反卷积

    反卷积这个东西老是容易忘,而且很多文章理论讲的很详细,但反卷积实际怎么操作的却没有概念,因此想以自己喜欢的方式(直接上图和代码)写一篇,以便随时翻阅. 卷积 tf中的padding方式有两种,SAME ...

  3. python 反卷积(DeConv) tensorflow反卷积(DeConv)(实现原理+手写)

    Tensorflow反卷积(DeConv)实现原理+手写python代码实现反卷积(DeConv) 理解: https://www.zhihu.com/question/43609045/answer ...

  4. Tensorflow反卷积(DeConv)实现原理+手写python代码实现反卷积(DeConv)

    最近看到一个巨牛的人工智能教程,分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.平时碎片时间可以当小说看,[点这里可以去膜拜一下大神的" ...

  5. 机器学习19:反卷积算法

    机器学习19:反卷积算法(转载和整理) 在整理全卷积网络的过程中,被反卷积的概念困扰很久,于是将反卷积算法单独整理为一篇博客,本文主要转载和整理自知乎问题如何通俗易懂地解释反卷积?中的高票答案. 1. ...

  6. 反卷积原理和实际代码详细讲解!

    做的项目里涉及到了反卷积,上网查了很多资料发现有的只讲了原理,没有直观的代码实践,有些讲了代码却又完全忽视原理,所以想要以这篇博文做一个小小的整合,方便以后查阅. 文章目录 反卷积原理 首先来看卷积操 ...

  7. tensorflow 卷积、反卷积形式的去噪自编码器

    tensorflow 卷积.反卷积形式的去噪自编码器 对于去噪自编码器,网上好多都是利用全连接神经网络进行构建,我自己写了一个卷积.反卷积形式的去噪自编码器,其中的参数调优如果有兴趣的话,可以自行修改 ...

  8. tensorflow一维卷积输入_深度学习中的反卷积(Transposed Convolution)

    反卷积(Transposed Convolution)是一种图像上采样(UpSample)的方法,在DCGAN中用它来将随机采样的值转换为一张完整的图像. DCGAN生成手写数字.图片来源[5] Tr ...

  9. 深度学习之----双线性插值,转置卷积,反卷积的区别与联系

    一.线性插值 这里讲解线性插值法的推导为了给双线性插值公式做铺垫.  线性插值法是指使用连接两个已知量的直线来确定在这个两个已知量之间的一个未知量的值的方法. 二.双线性插值 双线性插值是插值算法中的 ...

最新文章

  1. 对Linux文件中的多行进行注释
  2. 极客新闻——03、陈庆敏:项目管理的三个关键
  3. 教你如果设置自己喜欢的QQ背景音乐
  4. linux脚本实现复制,Shell脚本实现复制文件到多台服务器的代码分享
  5. 从一个帖子看 所谓“知乎” 的真实水平
  6. 转:Jmeter 用户思考时间(User think time),定时器,和代理服务器(proxy server)...
  7. Python与数据库(1)mysql
  8. 2017.9.20 mode 思考记录
  9. css随机数,在LESS CSS中生成随机数?
  10. 使用Picker的时候,让input输入框使用焦点,手机键盘不弹出
  11. web 前端性能优化汇总
  12. 光储并网VSG系统Matlab/simulink仿真模型 系统前级直流部分包括光伏阵列、变换器、储能系统和双向dcdc变换器,后级交流子系统包括逆变器LC滤波器,交流负载
  13. Markdown pad2 使用本地图片
  14. python3 file_Python3-file
  15. 焦虑症和植物神经紊乱是同一种疾病吗
  16. 暴雪战网客户端下载后只能连接中国设置
  17. 七夕将至,在线感受程序员男友的浪漫,不要再叫我们直男了好吗!!!
  18. 网络世界的罪与罚:黑帽子是没有天堂的
  19. 2019年天梯赛练习赛4
  20. 云计算和虚拟化选修课程报告

热门文章

  1. Android官方开发文档Training系列课程中文版:分享简单数据之从其它APP接收简单数据
  2. 顺序表Sqlist.cpp
  3. 多mysql实例下开发需要注意主从同步延迟
  4. MySQL日志详细说明
  5. 20181123_任务(套件培训)
  6. linux 下环境变量设置
  7. (转)#ifndef的用法
  8. [VBA] 设置行高和列宽,以及全选单元格
  9. HDU 1033 水题
  10. javax.servlet.http.HttpServletRequest接口(HTTP版本)