Я хочу сделать взвешенную метрику c и распечатать ее, пока Керас тренирует мои данные. Однако я не могу найти никаких рабочих примеров того, как это сделать.
При работе:
metrics = [MyClass.MyWeightedMetric]
model.compile(optimizer=RMSprop,loss="mean_squared_error",metrics=metrics)
, где
class MyClass:
@staticmethod
def MyWeightedMetric(y_true,y_pred,sample_weight=None):
print(sample_weight)
#do stuff that doesn't even use sample_weight for now
, тогда он печатает None все время. Если я изменю строку компиляции на
model.compile(optimizer=RMSprop,loss="mean_squared_error",weighted_metrics=metrics)
, то получу ошибки:
(0) Invalid argument: Can not squeeze dim[0], expected a dimension of 1, got 16384
при вызове model.fit (). Мне не ясно, что я делаю неправильно или что я должен делать вместо этого. Я попытался создать подкласс, как в этом примере https://www.tensorflow.org/api_docs/python/tf/keras/metrics/Metric, но у него был собственный набор ошибок, которые я не смог устранить.
Есть ли где-нибудь рабочий пример взвешенных метрик в кератах что я могу предоставить на этапе компиляции модели? Я нахожу много примеров невзвешенного использования, но в данный момент невозможно найти работающий пример взвешенного метри c. Для чего стоит я использую Tensorflow 2.0