@classmethod
def from_schema(cls, schema: Schema, bottom_mlp: BlockType, top_mlp: Optional[BlockType]=None, **kwargs):
    embedding_layer = EmbeddingFeatures.from_schema(schema.select_by_tag(Tag.CATEGORICAL), infer_embedding_sizes=False, embedding_dim_default=bottom_mlp.layers[(- 1)].units)
    if (not embedding_layer):
        raise ValueError('embedding_layer must be set.')
    continuous_features = cast(Optional[TabularBlock], ContinuousFeatures.from_schema(schema.select_by_tag(Tag.CONTINUOUS), aggregation='concat'))
    return cls(continuous_features, embedding_layer, bottom_mlp, top_mlp=top_mlp, **kwargs)
@classmethod
def from_schema(cls, schema: Schema, bottom_mlp: BlockType, top_mlp: Optional[BlockType]=None, **kwargs):
    embedding_layer = EmbeddingFeatures.from_schema(schema.select_by_tag(Tag.CATEGORICAL), infer_embedding_sizes=False, embedding_dim_default=bottom_mlp.layers[(- 1)].units)
    if (not embedding_layer):
        raise ValueError('embedding_layer must be set.')
    continuous_features = cast(Optional[TabularBlock], ContinuousFeatures.from_schema(schema.select_by_tag(Tag.CONTINUOUS), aggregation='concat'))
    return cls(continuous_features, embedding_layer, bottom_mlp, top_mlp=top_mlp, **kwargs)