如何将numpy函数转换为张量流操作而不会出现错误

时间:2019-04-09 16:09:21

标签: python numpy tensorflow keras gradient

我正在建立自定义损失,该损失考虑了图像的梯度和拉普拉斯算子

def custom_loss_mse_GradLap(X_true, X_pred):

  X_pred_GradLap = np.asarray(model_CompGradientLaplacian(X_pred))
  X_true_GradLap = np.asarray(model_CompGradientLaplacian(X_true))

  #define the parametrs
  alpha          = np.array([1/3,1/3,1/3])
  # mse for field

  loss1   = K.mean(K.square(X_pred-X_true), axis=-1)                             

  # mse for gradient
  loss2 = K.mean(K.square(X_pred_GradLap[0]-X_true_GradLap[0]), axis=-1)

  # mse for laplacian
  loss3 = K.mean(K.square(X_pred_GradLap[1]-X_true_GradLap[1]),axis=-1)

  return alpha[0] * loss1 + alpha[1] * loss2 + alpha[2] * loss3

但是我在计算梯度和拉普拉西恩时遇到了问题。 我尝试了以下操作,但会引发错误

input=tf.placeholder(shape=(64,64),dtype=tf.float32)
def calc_grad(x):
  return np.gradient(x)
grad = Lambda(lambda x:tf.py_func(calc_grad,[x],tf.float32))
model_grad = Model(input_data,grad)

0 个答案:

没有答案