File size: 1,926 Bytes
3b9167e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Modelo CNN para Clasificaci贸n de Perros vs Gatos

Este modelo de red neuronal convolucional (CNN) ha sido entrenado para clasificar im谩genes de perros y gatos. Se trata de una tarea de clasificaci贸n binaria donde la salida es `0` (gato) o `1` (perro). Fue construido utilizando `TensorFlow` y `Keras`, entrenado desde cero con un dataset personalizado.

---

## Dataset

- **Nombre**: Cats vs Dogs Dataset
- **Origen**: Carpeta local `train/`
- **Cantidad**: 25,000 im谩genes
  - Etiquetado autom谩tico por nombre de archivo (`cat` o `dog`)
- **Tama帽o de imagen**: 150x150 p铆xeles
- **Preprocesamiento**:
  - Reescalado: todos los valores de p铆xel normalizados a `[0, 1]`
  - Divisi贸n en entrenamiento y validaci贸n: `80% / 20%`

---

## Arquitectura del modelo

Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),
    MaxPooling2D(2, 2),
    
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),

    Conv2D(128, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),

    Flatten(),
    Dense(512, activation='relu'),
    Dropout(0.5),
    Dense(1, activation='sigmoid')
])

model.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=['accuracy'])

model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val))

---

## Como usar

from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing import image
import numpy as np

model = load_model("dogs_vs_cats_cnn.h5")

def predict_image(img_path):
    img = image.load_img(img_path, target_size=(150, 150))
    img_array = image.img_to_array(img) / 255.0
    img_array = np.expand_dims(img_array, axis=0)
    
    prediction = model.predict(img_array)[0][0]
    return "Perro 馃惗" if prediction > 0.5 else "Gato 馃惐"

---

## Guardado del modelo

model.save("dogs_vs_cats_cnn.h5")

---

## Requisitos

- Python >= 3.8
- TensorFlow >= 2.9
- NumPy
- scikit-learn

---