Я хочу написать пользовательскую функцию потерь для сети 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], [].