当前位置: 首页 > 编程笔记 >

在keras里实现自定义上采样层

东门修文
2023-03-14
本文向大家介绍在keras里实现自定义上采样层,包括了在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里实现自定义上采样层就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我收到此错误: sum()得到了意外的关键字参数’out’ 当我运行此代码时: 除了对批处理进行循环并编辑源代码之外,是否可以实现自定义指标? 问题答案: 问题是,并没有与NumPy阵列但无论哪种Theano或TensorFlow张量。这就是为什么您会收到此错误。 您可以定义自定义指标,但必须记住,其参数是那些张量,而不是NumPy数组。

  • 我需要一些帮助与keras损失函数。我一直在Tensorflow后端的keras上实现自定义损失功能。 我已经在numpy中实现了自定义损失函数,但如果能将其转换为keras损失函数,那就太好了。丢失函数采用数据帧和用户id序列。如果用户id不同,则相同用户id的欧氏距离为正和负。函数返回数据帧的合计标量距离。 我试图实现到keras损失函数。我提取Numpy数组从y_true和y_pred张量对

  • Java坚持 注释是在没有特定实现的情况下定义的。 实际验证在哪里实施?如何扩展此功能以允许管理员覆盖? 虽然这里没有显示,但我已经将组用于此约束的另一个目的。

  • 问题内容: 我解析了.yaml文件,需要以自定义方式解组其属性之一。我正在使用包裹。 有问题的属性按如下方式存储在我的.yaml文件中: 因此,它基本上是一种类型。 但是我需要在哪里定义为: 我的结构: 我试图像这样实现Unmarshaler接口: 我的问题是在函数内部未定义类型,从而在运行时导致nil指针异常。 我如何在此处正确实现Unmarshaler接口? 问题答案: 由于@Volker并未

  • 我创建了一个定制的jmeter java采样器,它在循环中向HTTPendpoint发送请求并解析响应。希望多个线程在单个线程组中运行此采样器。 有人建议,我可以在安装线程组中使用beanshell采样器从csv读取,创建hashmap并使用之类的内容将其存储在JMeter属性中。有人能告诉我这是否是一个合理的方法吗?如果是,我如何访问自定义采样器中的特定JMeter属性? 我找到了这个答案:使用

  • 日志采集配置 在应用详情页中间有一个叫作“日志采集”的模块 点击右边的“添加”按钮,在弹出的对话框中选择日志的路径及正则规则 文件路径:你日志文件的位置 日志规则:如果没有特殊需求的话默认就好 提交后服务会自动重启动。 日志采集 如果配置了上面采集器,那么它会向服务所在的Pod注入一个Filebeat采集器对应用服务的业务日志进行采集。把采集到的日志入到kafka集群,然后logstash进行消息