在自定義loss函數中使用tf.while_loop的正確方法是什么?

我打算使用以下功能作為培訓的損失:

import tensorflow as tf

def wrap(dist): 
    return tf.while_loop(
        cond=lambda X: tf.math.abs(X) > 0.5,
        body=lambda X: tf.math.subtract(X, 1.0),
        loop_vars=(dist))


# PBC-aware MSE, period = 1.0 ([0, 1.0])
def custom_loss(y_true, y_pred):
    diff = tf.math.abs(y_true - y_pred)
    diff = tf.nest.flatten(diff)
    diff = tf.vectorized_map(wrap, diff)
    return tf.math.reduce_mean(tf.math.square(diff))

# ...other code for loading data and defining the model

model.compile(optimizer=tf.keras.optimizers.SGD(momentum=0.1),
              loss=custom_loss)

但是我遇到了一堆錯誤信息。由于日志太長,我把它們放在一個要點中:https://gist.github.com/HanatoK/f75fddd82372f499c37279f1128cad7a

上面代碼的等效numpy版本應該是

def wrap_diff2(x, y, period=1.0):
    diff = np.abs(x - y)
    while diff > 0.5 * period:
        diff -= period
    return diff * diff

def custom_loss_numpy(y_true, y_pred):
    diff2 = np.vectorize(wrap_diff2)(y_true, y_pred)
    return np.mean(diff2)

有什么想法嗎?完整的代碼示例在googlecolab上共享:https://colab.research.google.com/drive/1ExVHgyKHQfGcpXvo5ZsuBBmzmHzxUekC?usp=共享

? 最佳回答:

Try this:

import tensorflow as tf
import numpy as np

def wrap(dist): 
    return tf.while_loop(
        cond=lambda X: tf.math.abs(X) > 0.5,
        body=lambda X: tf.math.subtract(X, 1.0),
        loop_vars=(dist))

def custom_loss(y_true, y_pred):
    diff = tf.math.abs(y_true - y_pred)
    diff = tf.reshape(diff, [-1])
    diff = tf.vectorized_map(wrap, [diff])
    return tf.math.reduce_mean(tf.math.square(diff))

y_true = np.array([[0., 1., 1.0], [0., 0., 0.]])
y_pred = np.array([[1., 1., 1.0], [1., 0., 1.]])
custom_loss(y_true, y_pred).numpy()
主站蜘蛛池模板: 国产精品毛片a∨一区二区三区| 国产在线aaa片一区二区99 | 午夜福利无码一区二区| 日韩伦理一区二区| 91福利一区二区| 日本韩国黄色一区二区三区| 91久久精品一区二区| 精品国产福利第一区二区三区| 国产一区二区三区亚洲综合| 亚洲日韩AV一区二区三区中文 | 国产成人一区二区三区视频免费 | 久久亚洲日韩精品一区二区三区 | 色精品一区二区三区| 精品国产一区二区麻豆| 在线欧美精品一区二区三区| 久久久av波多野一区二区| 高清国产AV一区二区三区| 国产另类TS人妖一区二区| 国产在线观看一区精品| 亚洲人成网站18禁止一区| 亚洲国产专区一区| 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 久久精品国产第一区二区| 蜜桃视频一区二区三区| 日韩精品一区二区三区不卡| 无码精品前田一区二区| 亚洲国产专区一区| 99久久国产精品免费一区二区| 久久无码人妻精品一区二区三区| 无码AV动漫精品一区二区免费| 亚洲一区二区三区在线视频| 国产成人高清视频一区二区 | 亚洲综合av一区二区三区不卡| 日本视频一区在线观看免费| 亚洲欧洲无码一区二区三区| 国精产品一区一区三区有限在线| 精品国产AV无码一区二区三区| 国产一区二区精品在线观看| 精品久久久久中文字幕一区| 性色A码一区二区三区天美传媒| 日韩一区二区在线观看视频|