涉及卷积的张量流中的自定义损失函数

生物

我正在尝试使用图像与内核的卷积来实现自定义损失函数,这与此问题所做的非常相似我已经准备好我的数据格式为(batch_size, height, width, channels). 特别是对于我的情况,这将是(5, 500, 500, 3).

我正在使用的 2D 内核示例:
[0 0 0; -1 0 1; 0 0 0]通道 0
[0 1 0; 0 0 0; 0 -1 0]通道 1
[0 0 0; 0 1 0; 0 0 0]通道 2

我想用不同的内核对每个通道进行卷积,并总结结果。这将针对批次中的 5 个图像中的每一个完成。结果应该是只有 1 个通道的 5 500x500 图像,因此输出可以具有(batch_size, height, width, 1)或 的形状(batch_size, height, width)

为了全面了解我正在尝试做的事情,我打算使用不同的过滤器组再重复上述过程 2 次。所以现在我将有 3 个形状的输出(batch_size, height, width, 1),我可以将它们叠加为形状的张量(batch_size, height, width, 3)这与原始张量的形状相同。之后,我将使用另一个张量进行元素乘积并求和以计算损失值。

我发现了一些 2D 卷积函数:tf.nn.conv2dtf.keras.backend.conv2dtf.keras.layers.Conv2D哪一个适合这个目的?使用单个 3x3x3 内核进行卷积是否更好?或者也许是带有 3x3x3 内核的 3D 卷积?

如果您能提供一个简单的示例或链接,那就太好了!这是一个模板

import tensorflow as tf
import numpy as np
from tensorflow import keras
from tensorflow.keras import backend as K

def my_loss(y_true, y_pred):
    kernelx0 = tf.convert_to_tensor(np.array([[0, 0, 0], [-1, 0, 1], [0, 0, 0]]))
    kernely0 = tf.convert_to_tensor(np.array([[0, 1, 0], [0, 0, 0], [0, -1, 0]]))
    kernelz0 = tf.convert_to_tensor(np.array([[0, 0, 0], [0, 1, 0], [0, 0, 0]]))

    kernelx1 = ...
    kernely1 = ...
    kernelz1 = ...

    kernelx2 = ...
    kernely2 = ...
    kernelz2 = ...

    # how to do convolution?

    return loss
舒巴姆·沙斯瓦特

试试这个方法:

#this is your custom filter
kernel_in = tf.constant([[[0, 0, 0], [-1, 0, 1], [0, 0, 0]],
                  [[0, 1, 0], [0, 0, 0], [0, -1, 0]],
                  [[0, 0, 0], [0, 1, 0], [0, 0, 0]]], 
                  dtype=tf.float32)

kernel_in = tf.expand_dims(kernel_in,axis=-1) #expand this into a 4D tensor
#print(kernel_in.shape) #shape = (3,3,3,1)

out = tf.nn.conv2d(x_in, kernel_in, strides=[1, 1], padding='VALID') #x_in is your input

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

张量流中的自定义损失函数

张量流中具有循环的自定义损失

在Keras中的自定义损失函数中重塑张量

在自定义损失函数中迭代张量

如何在自定义损失函数中遍历张量?

在自定义损失函数中重塑张量

自定义损失函数中的张量索引

ssim作为自动编码器中的自定义损失函数(keras或/和张量流)

如何使用过滤自定义张量流损失函数?

如何使用张量流更正此自定义损失函数?

如何在张量流中表达此自定义损失函数?

在张量流中编写自定义成本函数

Keras自定义损失函数打印张量值

自定义损失函数访问张量通道

在Keras中设计自定义损失函数(在Keras中以张量为单位的索引)

如何在TensorFlow中的自定义损失函数中标准化张量?

Keras中的自定义损失函数

Keras 中的自定义损失函数:初始化并将值附加到循环中的张量

如何在张量流中编写自定义的LSTM?

在 R 中制作涉及求和的自定义函数

Keras Python 自定义损失函数给出张量(的绝对差值)的最大值?

张量的矢量化运算,而不是在keras自定义损失函数中使用for循环

在自定义损失函数中将张量转换为 numpy 数组

为自定义损失函数创建形状与模型输出相同的 keras 张量

如何在Keras自定义损失函数中使用张量?

keras 自定义损失函数转换为张量时的值错误

R Keras中的自定义损失函数

Keras,Python中的自定义损失函数?

在CNN的Keras自定义损失函数中处理数据