Tensorflow像素比较

时间:2017-10-03 19:52:12

标签: python tensorflow

我正在为tensorflow中的回归任务构建CNN。 我有一个非常特殊的丢失函数,它是稀疏的,因为预测的输出图像只有几个像素标签可用。在这个损失函数中,我想分割输出图像的两个像素值,并将结果与​​一些给定的标签进行比较。 使用for循环很容易做到这一点。但是我需要在tensorflow操作中执行此操作以确保反向传播正常工作(渐变必须计算)。

更详细地说明我需要什么以及我失败的地方:

在这个玩具模型中,我有2个形状(批次,高度,宽度)的灰度图像:

import numpy as np
import tensorflow as tf

# given:
# normalized greyscale image (batch=2):
grey_img = np.array([
                     # image 1:
                     [[ 0.65625   ,  0.67578125,  0.69140625],
                      [ 0.66796875,  0.6796875 ,  0.6953125 ],
                      [ 0.6796875 ,  0.69140625,  0.6796875 ]],
                     # image 2:
                     [[ 0.37890625,  0.3671875 ,  0.3671875 ],
                      [ 0.3828125 ,  0.37109375,  0.3671875 ],
                      [ 0.38671875,  0.37890625,  0.37109375]]
                    ])
grey_img_tf = tf.constant(grey_img)

我有一个(稀疏的)带标签的像素比较列表。 我需要比较批次的point1(' x1',' y1')和point2(' x2',' y2') '批量')标签('标签'在{1,2,3}中)。 (' x1',' y1',' x2',' y2')表示灰度图像grey_img的像素索引(' ; x1 / 2'是宽度轴上的):

# labels are in order ['batch', 'x1', 'y1', 'x2', 'y2', 'label']
labels = np.array([[0, 0, 2, 1, 1, 1],
                   [0, 2, 1, 0, 0, 3],
                   [1, 1, 1, 1, 1, 2]])

我需要以tensorflow-istic方式做的是比较grey_img_tf中的相应像素: 例如,我需要进行第一次比较

# if point 2 is greater than point 1:
if grey_img[0, 1, 1] / grey_img[0, 0, 2] > 1:
    prediction = 1
# if point 1 is greater than point 2:
elif grey_img[0, 0, 2] / grey_img[0, 1, 1] > 1:
    prediction = 2
# if both are equal:
else:
    prediction = 3

我需要这样做不是为了np数组而是为了tensorflow grey_img_tf和所有批次。

0 个答案:

没有答案