我写了一个自定义丢失函数,但它非常慢。只需要几个小时的模型编译。它背后的原因是什么?有什么方法可以优化这段代码,以便它可以变得更快?
打印'2完成'后所需的大部分处理时间。
def Loss(y_true, y_pred)
.
some code
.
w = np.random.random( 5, 10, 8, 8, 3))
# tile to 5D
y_true = np.tile(y_true, (5, 1, 1, 1, 1))
y_pred = np.tile(y_pred, (5, 1, 1, 1, 1))
print('1 done')
x = np.sum(y_pred*w, axis=(3, 4), keepdims=True)
y = np.sum(y_true*w, axis=(3, 4), keepdims=True)
print('2 done')
x2 = np.sum((w* y_pred)**2, axis=(3, 4), keepdims=True) - x**2
y2 = np.sum((w* y_true)** 2, axis=(3, 4), keepdims=True) - y**2
print('2.5 done')
xy = np.sum(w * y_pred * y_true, axis=(3, 4), keepdims=True) - x * y
.
some code
.
return Loss
损失函数:
def custom_loss(y_true, y_pred):
return Loss(y_true, y_pred)