Closed michael-shire-rs closed 1 year ago
That seems reasonable to me. A PR with a test would be very welcome 😀
haha, of course. i'll get on that. thanks.
edit: having trouble with Poetry on my macbook and making a PR. My software-deveoper-fu is not strong. :-(
Running into this now
File ~/anaconda3/envs/x/lib/python3.11/site-packages/scikeras/wrappers.py:735, in BaseWrapper.fit(self, X, y, sample_weight, **kwargs)
730 kwargs["epochs"] = kwargs.get(
731 "epochs", getattr(self, "fit__epochs", self.epochs)
732 )
733 kwargs["initial_epoch"] = kwargs.get("initial_epoch", 0)
--> 735 self._fit(
736 X=X, y=y, sample_weight=sample_weight, warm_start=self.warm_start, **kwargs,
737 )
739 return self
File ~/anaconda3/envs/x/lib/python3.11/site-packages/scikeras/wrappers.py:900, in BaseWrapper._fit(self, X, y, sample_weight, warm_start, epochs, initial_epoch, **kwargs)
896 X = self.feature_encoder_.transform(X)
898 self._check_model_compatibility(y)
--> 900 self._fit_keras_model(
901 X,
902 y,
903 sample_weight=sample_weight,
904 warm_start=warm_start,
905 epochs=epochs,
906 initial_epoch=initial_epoch,
907 **kwargs,
908 )
File ~/anaconda3/envs/x/lib/python3.11/site-packages/scikeras/wrappers.py:510, in BaseWrapper._fit_keras_model(self, X, y, sample_weight, warm_start, epochs, initial_epoch, **kwargs)
508 for key, val in hist.history.items():
509 try:
--> 510 key = metric_name(key)
511 except ValueError as e:
512 # Keras puts keys like "val_accuracy" and "loss" and
513 # "val_loss" in hist.history
514 if "Unknown metric function" not in str(e):
File ~/anaconda3/envs/x/lib/python3.11/site-packages/scikeras/utils/__init__.py:112, in metric_name(metric)
110 if isinstance(fn_or_cls, Metric):
111 return _camel2snake(fn_or_cls.__class__.__name__)
--> 112 return fn_or_cls.__name__
AttributeError: 'str' object has no attribute '__name__'
https://github.com/adriangb/scikeras/blob/32fc6af3ffc85884ee8ce455c33b0bfe39126491/scikeras/utils/__init__.py#LL109C1-L112C30
when
fn_or_cls
is a string, this function breaks because there is no__name__
I propose something like this
I ran into an error when the metric was "loss"