Click aquí ENLACE para ver resultados en Google Colab
Para desarrollar una red neuronal simple que convierta grados Celsius a Fahrenheit usando Python y TensorFlow, seguiremos un enfoque paso a paso. Antes de comenzar, asegúrate de tener instalado TensorFlow en tu entorno de Python. Si no lo tienes instalado, puedes hacerlo ejecutando `pip install tensorflow` en tu terminal o prompt de comandos.
Vamos a construir una red neuronal muy básica con una sola capa y una sola neurona, ya que este es un problema de regresión lineal simple. Aunque este problema se puede resolver directamente con una fórmula matemática (`F = C * 9/5 + 32`), lo usaremos como un ejemplo para entender cómo funcionan las redes neuronales con TensorFlow.
Paso 1: Importar las bibliotecas necesarias
```python
import tensorflow as tf
import numpy as np
import logging
logger = tf.get_logger()
logger.setLevel(logging.ERROR)
```
Paso 2: Preparar los datos de entrenamiento
Para entrenar nuestra red, necesitamos un conjunto de valores de entrada (grados Celsius) y sus correspondientes valores de salida (grados Fahrenheit). Vamos a definirlos como arrays de NumPy.
```python
celsius_q = np.array([-40, -10, 0, 8, 15, 22, 38], dtype=float)
fahrenheit_a = np.array([-40, 14, 32, 46, 59, 72, 100], dtype=float)
```
Paso 3: Definir el modelo
Usaremos el modelo secuencial de Keras, que es una pila lineal de capas. Nuestra red tendrá una sola capa con una sola neurona. La capa densa (`Dense`) conecta todas las entradas a cada salida con un conjunto de pesos. Utilizaremos el método `Sequential` para definir esta capa.
```python
model = tf.keras.Sequential([
tf.keras.layers.Dense(units=1, input_shape=[1])
])
```
Paso 4: Compilar el modelo
Antes de entrenar el modelo, necesitamos configurarlo con el método `compile`. Especificaremos la función de pérdida y el optimizador a usar.
```python
model.compile(loss='mean_squared_error',
optimizer=tf.keras.optimizers.Adam(0.1))
```
Usaremos el optimizador `Adam` y una tasa de aprendizaje de `0.1`. Esto es relativamente alto para este tipo de problema, pero funcionará bien.
Paso 5: Entrenar el modelo
Ahora entrenaremos el modelo usando el método `fit`. Pasaremos los inputs y outputs de nuestros datos de entrenamiento, junto con el número de epochs (iteraciones sobre el conjunto de datos completo).
```python
history = model.fit(celsius_q, fahrenheit_a, epochs=500, verbose=False)
print("Modelo entrenado!")
```
Paso 6: Ver el proceso de entrenamiento
Podemos usar Matplotlib para visualizar cómo disminuye la pérdida durante el entrenamiento.
```python
import matplotlib.pyplot as plt
plt.xlabel('Epoch Number')
plt.ylabel("Loss Magnitude")
plt.plot(history.history['loss'])
```
Paso 7: Usar el modelo para hacer predicciones
Finalmente, podemos usar el modelo entrenado para convertir grados Celsius a Fahrenheit.
```python
print(model.predict([100.0]))
```
Deberías ver un resultado cercano a `212`, que es la conversión exacta de `100` grados Celsius a Fahrenheit.
Este ejemplo te muestra cómo construir una red neuronal simple con TensorFlow para resolver un problema de regresión lineal. Aunque este es un ejemplo muy básico, el proceso es similar para problemas más complejos y redes más grandes. ¿Hay algún aspecto de este proceso que te gustaría explorar más a fondo o alguna duda específica que tengas?
No hay comentarios:
Publicar un comentario