```python
import tensorflow as tf

# Definir los datos de entrada
entrada = tf.keras.layers.Input(shape=(4,))

# Definir la capa oculta con 8 nodos
oculta = tf.keras.layers.Dense(8, activation='relu')(entrada)

# Definir la capa de salida con 3 nodos y función de activación softmax
salida = tf.keras.layers.Dense(3, activation='softmax')(oculta)

# Crear el modelo a partir de las capas definidas
modelo = tf.keras.models.Model(inputs=entrada, outputs=salida)

# Compilar el modelo con la función de pérdida 'categorical_crossentropy'
# y el optimizador 'adam'
modelo.compile(loss='categorical_crossentropy', optimizer='adam')

# Imprimir un resumen del modelo
modelo.summary()
```
```python
import tensorflow as tf

# Definir los datos de entrada
entrada = tf.keras.layers.Input(shape=(4,))

# Definir la capa oculta con 8 nodos
oculta = tf.keras.layers.Dense(8, activation='relu')(entrada)

# Definir la capa de salida con 3 nodos y función de activación softmax
salida = tf.keras.layers.Dense(3, activation='softmax')(oculta)

# Crear el modelo a partir de las capas definidas
modelo = tf.keras.models.Model(inputs=entrada, outputs=salida)

# Compilar el modelo con la función de pérdida 'categorical_crossentropy'
# y el optimizador 'adam'
modelo.compile(loss='categorical_crossentropy', optimizer='adam')

# Imprimir un resumen del modelo
modelo.summary()
```