`tff.learning.from_keras_model` does not accept subclassed Keras model
**Describe the bug**
`tff.learning.from_keras_model()` does not accept subclassed keras model. See this [colab](https://colab.research.google.com/drive/1dPJlo3e6vVHXS9O4Pm3_Qq2c_h0VtRaP?usp=sharing).

**Environment (please complete the following information):**
* OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Colab
* Python package versions (e.g., TensorFlow Federated, TensorFlow): Colab TF-nightly TFF-nightly
* Python version: python 3.6
* Bazel version (if building from source): N/A
* CUDA/cuDNN version: N/A
* What TensorFlow Federated execution stack are you using? N/A

**Expected behavior**
`tff.learning.from_keras_model()` properly accepts subclassed keras model, or provide info on the doc if this is not possible?

**Additional context**
The issue seems to be due to `from_keras_model()` consuming `tf.keras.model.output` (see [pointer](https://github.com/tensorflow/federated/blob/v0.16.1/tensorflow_federated/python/learning/keras_utils.py#L260)) which is not written when the model is subclassed.
diff --git a/tensorflow_federated/python/learning/keras_utils.py b/tensorflow_federated/python/learning/keras_utils.py
index 1d9a8a9b..51ecfe95 100644
--- a/tensorflow_federated/python/learning/keras_utils.py
+++ b/tensorflow_federated/python/learning/keras_utils.py
@@ -51,6 +51,11 @@ def from_keras_model(
   which the generated `tff.learning.Model` will appear, TFF needs the type `y`
   in addition to the type `x`.
 
+  Note: This function does not currently accept subclassed `tf.keras.Models`,
+  as it makes assumptions about presence of certain attributes which are
+  guaranteed to exist through the functional or Sequential API but are
+  not necessarily present for subclassed models.
+
   Args:
     keras_model: A `tf.keras.Model` object that is not compiled.
     loss: A single `tf.keras.losses.Loss` or a list of losses-per-output. If a
['tensorflow_federated/python/learning/keras_utils.py']