python - 实现自定义层来生成二维指数图像

标签 python tensorflow keras neural-network deep-learning

我需要实现一个自定义层(在 Tensorflow 或 Keras 中),它生成具有可学习参数(方差)的 2d 高斯热图。我希望该层将每个样本的中心(即地面实况地标坐标)作为它们的输入和输出 2d 高斯图像。 但是,我不确定如何实现它,因为我必须迭代样本数,而当样本数为“无”时,在“调用”方法中进行编译期间这是不可能的。 更具体地说,如果只有一个样本,这就是我生成热图的方式:

def call(self,landmark):

    x, y = tf.meshgrid(tf.linspace(-100.0,100.0,128), tf.linspace(-100.0,100.0,128))
    d = tf.sqrt((x-landmark[0])**2+(y-landmark[1])**2)

    g=tf.exp(-tf.square(d)/(2*self.sigma**2))/(2*np.pi*self.sigma)
    return g

但是,假设地标是最初形状为 (None,2) 的输入张量,我如何实现一个为每个样本输出相应结果的层?

最佳答案

我想出了一个答案,我不确定它的效果如何: 您可以制作一个二维常量网格图像和地标的列表,并同时将它们作为输入传递,那么调用函数将是:

def call(self, x):
    image, landmark = x
    sub = image - landmark

    sigma = self.kernel

    d = KB.sqrt((sub[:, :, :, 0]) ** 2 + (sub[:, :, :, 1]) ** 2)

    g = tf.exp(-tf.square(d) / (2 * sigma ** 2)) / (2 * np.pi * sigma)

    return g

关于python - 实现自定义层来生成二维指数图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57067542/

相关文章:

for-loop - tensorflow 中以下代码的等价物是什么?

keras - 在 Keras 中循环使用 model.fit 是否合乎逻辑?

python-3.x - Tensorflow 对象检测 API 培训问题

python - Keras Tokenizer 方法究竟做了什么?

tensorflow - “NoneType”对象不可下标 - Keras 自定义回调类出错

python - Pandas:使用交叉表时更改列的顺序

python - Python : is it ok to threads read/write simultaneously to same TCP socket?

python - Spacy:如何获得所有描述名词的词?

python - 使用 Tinker Draw Python 创建类似 MNIST 数据集的数组

python - TF 2.0 GPU cofingure,如何在pycharm中创建另一个虚拟环境后配置tensorflow-gpu 2.0和cuda、cudnn