我已经看过tf.identity在一些地方使用过,比如官方的CIFAR-10教程和stackoverflow上的批量规范化实现,但我不明白为什么它是必要的.
它用于什么?任何人都可以提供一两个用例吗?
一个建议的答案是它可以用于CPU和GPU之间的传输.这对我来说并不清楚.基于此问题的扩展:loss = tower_loss(scope)在GPU块下,这表明我定义的所有运算符tower_loss都映射到GPU.然后,在结束时tower_loss,我们看到total_loss = tf.identity(total_loss)它返回之前.为什么?没有tf.identity在这里使用会有什么缺陷?
我想用Python写一个Op.本教程仅解释如何使用Python包装器在c ++中执行此操作. https://www.tensorflow.org/versions/master/how_tos/adding_an_op/index.html#adding-a-new-op
我怎样才能在Python中完全编写它?
有人可以gradient_override_map在TensorFlow中解释我的功能吗?我无法准确理解它的用法.
我看到代码用法为:
with G.gradient_override_map({"Floor": "Identity"}):
return tf.reduce_mean(SomeVals) * SomeOtherVal
Run Code Online (Sandbox Code Playgroud)
到底发生了什么?什么是Identity?
我正在尝试使用自定义损失函数进行对象分割,如下所示:
def chamfer_loss_value(y_true, y_pred):
# flatten the batch
y_true_f = K.batch_flatten(y_true)
y_pred_f = K.batch_flatten(y_pred)
# ==========
# get chamfer distance sum
// error here
y_pred_mask_f = K.cast(K.greater_equal(y_pred_f,0.5), dtype='float32')
finalChamferDistanceSum = K.sum(y_pred_mask_f * y_true_f, axis=1, keepdims=True)
return K.mean(finalChamferDistanceSum)
def chamfer_loss(y_true, y_pred):
return chamfer_loss_value(y_true, y_pred)
Run Code Online (Sandbox Code Playgroud)
y_pred_f是我的U-net的结果.y_true_f是地面真实标签掩码上的欧氏距离变换的结果,x如下所示:
distTrans = ndimage.distance_transform_edt(1 - x)
Run Code Online (Sandbox Code Playgroud)
为了计算距离倒角,则相乘的预测图像(理想地,与1和0掩模)与地面实况距离变换,并简单地总结在所有像素.要做到这一点,我需要y_pred_mask_f通过阈值处理获得一个掩码y_pred_f,然后乘以y_true_f,并对所有像素求和.
y_pred_f在[0,1]中提供连续的值范围,我None type not supported在评估时得到误差y_true_mask_f.我知道损失函数必须是可微,且greater_equal和cast都没有.但是,在克拉斯有没有办法规避这个?也许在Tensorflow中使用一些解决方法?
machine-learning neural-network deep-learning keras tensorflow