我想为Keras网络编写自定义损失函数。 在此函数中,结果不仅取决于 y_actual 和 y_pred ,而且取决于我使用 y_actual 。 我写了以下函数。在此函数中,我希望将从数据库中检索到的 y_actual 标签包含在损失计算中。
def custom_loss(y_actual,y_pred):
dataset_whole=pd.read_sql("select * from Records", con=db)
dataset_features_only=dataset_whole.drop(['label'],axis=1)
dataset_whole_np=dataset_whole.values
dataset_whole_tf=tf.constant(dataset_whole_np)
dataset_features_np=dataset_features_only.values
dataset_features_tf=tf.constant(dataset_features_np)
index=tf.where(tf.equal(dataset_features_tf, y_actual))
row=dataset_whole_tf[index,:]
label=row['label']
return ((y_actual-y_pred)-tf.Variable(label,tf.float64))**
我在 row = dataset_whole_tf [index,:] 行中看到此错误消息:
ValueError: Shapes must be equal rank, but are 2 and 0 From merging shape 0 with other shapes. for 'loss/dense_7_loss/strided_slice/stack_1' (op: 'Pack') with input shapes: [?,2], [].