Are there cases where the condition `(self.output_2d_ and self.constant.shape[1] != y.shape[1])` wouldn't handle those two case given `safe_asarray(self.constant)`?