在keras里实现自定义上采样层
Keras里的UpSampling2D层不是中的双线性内插,而是简单的重复图像。这点和pytorch不一样,pytorch默认使用的是双线性内插。
同样:这里仍然使用的是keras而不是tf.keras.
keras里UpSampling2D的部分定义说明如下:
class UpSampling2D(Layer): """Upsampling layer for 2D inputs. Repeats the rows and columns of the data by size[0] and size[1] respectively.
可以看出,这里的上采样确实只是简单的图像重复。
要想使用双线性或者最近邻或者双三次插值上采样,则需要在tf的tf.image.resize_images函数基础上进行包装,代码如下:
####定义: def my_upsampling(x,img_w,img_h,method=0): """0:双线性差值。1:最近邻居法。2:双三次插值法。3:面积插值法""" return tf.image.resize_images(x,(img_w,img_h),0) ###调用: Lambda(my_upsampling,arguments={'img_w':self.img_w,'img_h':self.img_h})(output_6) ###load_model时注意加上tf: model = keras.models.load_model('my_model.h5', custom_objects={'tf': tf})
补充知识:keras中使用内置模型语义分割上采样维度不匹配
1.卷积时要使用padding=same因此要修改原来的padding=valid
x = conv2d_bn(img_input, 32, 3, strides=2, padding='same')
2.池化时卷积核大小修改为2而不是原来的3
branch_pool = layers.MaxPooling2D(2, strides=2, padding='same')(x)
以上这篇在keras里实现自定义上采样层就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
keras中的卷积层&池化层的用法
卷积层 创建卷积层 首先导入keras中的模块 from keras.layers import Conv2D 卷积层的格式及参数: Conv2D(filters, kernel_size, strides, padding, activation='relu', input_shape) filters: 过滤器数量 kernel_size:指定卷积窗口的高和宽的数字 strides: 卷积stride,如果不指定任何值,则strides设为1 padding: 选项包括'valid'和'sa
-
keras自动编码器实现系列之卷积自动编码器操作
图片的自动编码很容易就想到用卷积神经网络做为编码-解码器.在实际的操作中, 也经常使用卷积自动编码器去解决图像编码问题,而且非常有效. 下面通过**keras**完成简单的卷积自动编码. 编码器有堆叠的卷积层和池化层(max pooling用于空间降采样)组成. 对应的解码器由卷积层和上采样层组成. @requires_authorization # -*- coding:utf-8 -*- from keras.layers import Input, Dense, Conv2D, MaxPo
-
keras CNN卷积核可视化,热度图教程
卷积核可视化 import matplotlib.pyplot as plt import numpy as np from keras import backend as K from keras.models import load_model # 将浮点图像转换成有效图像 def deprocess_image(x): # 对张量进行规范化 x -= x.mean() x /= (x.std() + 1e-5) x *= 0.1 x += 0.5 x = np.clip(x, 0, 1)
-
在keras里实现自定义上采样层
Keras里的UpSampling2D层不是中的双线性内插,而是简单的重复图像.这点和pytorch不一样,pytorch默认使用的是双线性内插. 同样:这里仍然使用的是keras而不是tf.keras. keras里UpSampling2D的部分定义说明如下: class UpSampling2D(Layer): """Upsampling layer for 2D inputs. Repeats the rows and columns of the data by si
-
Keras实现支持masking的Flatten层代码
不知道为什么,我总是需要实现某种骚操作,而这种骚操作往往是Keras不支持的.例如,我有一个padding过的矩阵,那么它一定是带masking的,然后我想要把它Flatten,再输入到Dense层.然而Keras的Flatten层不支持masking. Keras原本Flatten的实现 class Flatten(Layer): def __init__(self, **kwargs): super(Flatten, self).__init__(**kwargs) self.input_s
-
Thinkphp5 自定义上传文件名的实现方法
这几天在做tp5的上传文件模块,项目需求是要把文件名在上传之后修改为 用户名+原文件名的组合形式,在网上找了一会儿发现好像没有类似的文章...只好自己去研究研究了. 之前查看过看云上面的官方手册,文件上传那一块真的是讲的含糊,对于我们这个为了项目自学tp5的大学生来说到处都是知识盲区啊. Tp5文件相关操作模块都在 thinkphp\library\think\File.php里面,我们找到第335行的move()函数 /** * 移动文件 * @access public * @param s
-
基于Vue.js+Nuxt开发自定义弹出层组件
今天给大家分享VPopup 基于Vue.js构建的轻量级移动端弹出框组件,详情如下所示: 一款融合了Vant.NutUI等热门Vue组件库中的Popup弹层.Dialog对话框.Toast提示框.ActionSheet动作面板框.Notify通知框等功能. 快速使用 在main.js中引入组件 // 引入弹窗Popup import Popup from './components/popup' Vue.use(Popup) 支持如下两种 组件式 及 函数式 调用插件. 组件式 <templat
-
elementUI自定义上传文件功能实现(前端后端超详细过程)
目录 简介: 1.简单介绍组件( upload)的属性(熟悉参数的直接略过) 2.主要目的自定义上传文件 2.1 组件代码 2.2 data中的属性 2.3 methods的方法 3.与其他参数通过axios提交到后台 总结 简介: 自定义上传文件并与其他参数一同提交到后台(主要使用axios) 1.简单介绍组件( upload)的属性(熟悉参数的直接略过) 总结elmentUI一下它的使用和常用属性的作用. limit : 限制了上传文件的个数 , 如果你上传单个文件这里设置 1 ,多个文件就
-
jQuery实现的自定义弹出层效果实例详解
本文实例讲述了jQuery实现的自定义弹出层效果.分享给大家供大家参考,具体如下: dialog.css: #DialogBySHFLayer { width:100%; height:100%; left:0; top:0; position:fixed; z-index:500; background-color:#333333; filter:alpha(Opacity=40); -moz-opacity:0.4; opacity: 0.4; } /*弹出的提示框*/ #DialogByS
-
vue项目中应用ueditor自定义上传按钮功能
由于上传地址问题,需要自定义上传按钮,效果如图 由于在页里面没有操作dom,所以想到了用vue的 自定义事件绑定$emit .$on来把点击事件传递给ueditor. 首先是给ueditor添加自定义按钮: 1,打开ueditor.all.js,找到btnCmds,大概在27854行,如下图,在数组添加一个自定义的按钮名称,我写的是"love" ueditor.all.js 2,给按钮添加事件 还是在ueditor.all.js文件内找到commands指令 给刚才定义的按钮扩展事件,
-
pytorch中的上采样以及各种反操作,求逆操作详解
import torch.nn.functional as F import torch.nn as nn F.upsample(input, size=None, scale_factor=None,mode='nearest', align_corners=None) r"""Upsamples the input to either the given :attr:`size` or the given :attr:`scale_factor` The algorith
-
keras获得某一层或者某层权重的输出实例
一个例子: print("Loading vgg19 weights...") vgg_model = VGG19(include_top=False, weights='imagenet') from_vgg = dict() # 因为模型定义中的layer的名字与原始vgg名字不同,所以需要调整 from_vgg['conv1_1'] = 'block1_conv1' from_vgg['conv1_2'] = 'block1_conv2' from_vgg['conv2_1']
-
pytorch进行上采样的种类实例
1.其中再语义分割比较常用的上采样: 其实现方法为: def upconv2x2(in_channels, out_channels, mode='transpose'): if mode == 'transpose': # 这个上采用需要设置其输入通道,输出通道.其中kernel_size.stride # 大小要跟对应下采样设置的值一样大小.这样才可恢复到相同的wh.这里时反卷积操作. return nn.ConvTranspose2d( in_channels, out_channels,
随机推荐
- js动态在form上插入enctype=multipart/form-data的问题
- asp 图片正则 替换,替换前检查图片是不是本地地址的方法
- php查找字符串出现次数的方法
- php中simplexml_load_string使用实例分享
- python搭建虚拟环境的步骤详解
- C++中获取UTC时间精确到微秒的实现代码
- C语言实现数据结构串(堆分配存储表示法)实例详解
- 使用Java代码在Android中实现图片裁剪功能
- 颜色选择器 Color Picker,IE,Firefox,Opera,Safar
- javascript实现的一个自定义长度的文本自动换行的函数。
- 两种简单的跨域方法(jsonp、php)
- Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
- jQuery学习笔记之jQuery的动画
- javascript运算符语法全面概述
- Display SQL Server Login Mode
- C#语言中字符类char的使用方法(总结)
- 避免Smarty与CSS语法冲突的方法
- Webpack框架核心概念(知识点整理)
- Android动画入门教程之kotlin
- 浅谈Vue.js 中的 v-on 事件指令的使用