Tensorflow 使用自定义损失函数时,我会遇到以下错误:';张量';对象没有属性'_numpy';

Tensorflow 使用自定义损失函数时,我会遇到以下错误:';张量';对象没有属性'_numpy';,tensorflow,keras,tensorflow2.0,tensor,cnn,Tensorflow,Keras,Tensorflow2.0,Tensor,Cnn,我试图为我的CNN创建一个自定义损失函数,但是当我编译模型时,我得到了一个错误:“Tensor”对象没有属性“\u numpy”。 我不知道怎么修理它。有人能帮我吗 def custom_loss(y_true, y_pred): y_pred = tf.keras.backend.get_value(y_pred) y_true = tf.keras.backend.get_value(y_true) errors = [] for x in range(0,y_pred.sh

我试图为我的CNN创建一个自定义损失函数,但是当我编译模型时,我得到了一个错误:“Tensor”对象没有属性“\u numpy”。 我不知道怎么修理它。有人能帮我吗

def custom_loss(y_true, y_pred):
  y_pred = tf.keras.backend.get_value(y_pred)
  y_true = tf.keras.backend.get_value(y_true)
  errors = []
  for x in range(0,y_pred.shape[0]):
    error = 0
    true_range = np.argmax(y_true[x])
    for i in range(0, y_pred[x].shape[0]):
      error = error + ((i-true_range)**2)*y_pred[x][i]
    errors.append(error)
  return tf.convert_to_tensor(np.array(errors))

model.compile(loss = custom_loss, metrics=['accuracy'], optimizer=keras.optimizers.Adam())

在程序开始时添加
tf.enable_eager_execution()
。这将增加对numpy的支持


添加
tf。在程序开始时启用\u eager\u execution()
。这将增加对numpy的支持


非常感谢。我用:
model.run\u急切地=True
来修复它。但是现在当调用
model.fit(…)
时,我有一个新的错误
没有为任何变量提供梯度
非常感谢。我用:
model.run\u急切地=True
来修复它。但是现在当调用
model.fit(…)
时,我有一个新的错误
没有为任何变量提供梯度