import abc
import tensorflow as tf



class Model(metaclass=abc.ABCMeta):
  @abc.astractmethod
  def __init__(self, **hyperparameters_and_initial_parameters):
    return NotImplemented

  @abc.astractmethod
  def train(self, *input_tensors) -> tf.Tensor: # scalar loss
    return NotImplemented

  @abc.astractmethod
  def test(self, *input_tensors) -> tf.Tensor: # labels
    return NotImplemented

import abc
import tensorflow as tf



class Model(metaclass=abc.ABCMeta):
  @abc.astractmethod
  def __init__(self, **hyperparameters_and_initial_parameters):
    return NotImplemented

  @abc.astractmethod
  def train(self, *input_tensors) -> tf.Operation: # training operation
    return NotImplemented

  @abc.astractmethod
  def test(self, *input_tensors) -> tf.Tensor: # labels
    return NotImplemented

Fix type annotation for Model.train()
Fix type annotation for Model.train()
