Soporte a la toma de decisiones | Ing. Jesús Bautista | Uso de Google Colab con Python #3
Ewin52
0:00 / 0:00
Soporte a la toma de decisiones | Ing. Jesús Bautista | Uso de Google Colab con Python #3
31 просмотр · 4 нед. назад
Ewin52
57 подписчиков
31 просмотр · 4 нед. назад
código
!pip install -q importlib_resources
import tensorflow as tf
import tensorflow_datasets as tfds
" setattr(tfds.image_classification.cats_vs_dogs, '_URL',"https://download.microsoft.com/downlo...") "
#Descargar el set de datos de perros y gatos
datos, metadatos = tfds.load('cats_vs_dogs', as_supervised=True, with_info=True)
tfds.as_dataframe(datos['train'].take(5), metadatos)
#Manipulamos y visualizamos el set en BN
Lo pasamos a TAMANO_IMG (100x100) y BN ( Solo para visualizar)
import matplotlib.pyplot as plt
import cv2
plt.figure(figsize=(20,20))
TAMANO_IMG = 100
for i, (imagen, etiqueta) in enumerate(datos['train'].take(25)):
imagen = cv2.resize(imagen.numpy(), (TAMANO_IMG, TAMANO_IMG))
imagen = cv2.cvtColor(imagen, cv2.COLOR_BGR2GRAY)
plt.subplot(5, 5, i+1)
plt.xticks([])
plt.yticks([])
plt.imshow(imagen, cmap='gray')
for i, (imagen, etiqueta) in enumerate(datos['train']): #Todos los datos
imagen = cv2.resize(imagen.numpy(), (TAMANO_IMG, TAMANO_IMG))
imagen = cv2.cvtColor(imagen, cv2.COLOR_BGR2GRAY)
imagen = imagen.reshape(TAMANO_IMG, TAMANO_IMG, 1) #Cambiar tamano a 100,100,1
datos_entrenamiento.append([imagen, etiqueta])
#Preparar mis variables X (entradas) y y (etiquetas) separadas
X = [] #imagenes de entrada (pixeles)
y = [] #etiquetas (perro o gato)
for imagen, etiqueta in datos_entrenamiento:
X.append(imagen)
y.append(etiqueta)
import numpy as np
X = np.array(X).astype(float) / 255
modeloDenso = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(100, 100, 1)),
tf.keras.layers.Dense(150, activation='relu'),
tf.keras.layers.Dense(150, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
modeloCNN = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(100, 100, 1)),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(128, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(100, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
modeloCNN2 = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(100, 100, 1)),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(128, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Dropout(0.5),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(250, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
modeloDenso.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
modeloCNN.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
modeloCNN2.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
from tensorflow.keras.callbacks import TensorBoard
tensorboardDenso = TensorBoard(log_dir='logs/denso')
modeloDenso.fit(X, y, batch_size=32,
validation_split=0.15,
epochs=100,
callbacks=[tensorboardDenso])
%load_ext tensorboard
%tensorboard --logdir logs
tensorboardCNN = TensorBoard(log_dir='logs/cnn')
modeloCNN.fit(X, y, batch_size=32,
validation_split=0.15,
epochs=100,
callbacks=[tensorboardCNN])
tensorboardCNN2 = TensorBoard(log_dir='logs/cnn2')
modeloCNN2.fit(X, y, batch_size=32,
validation_split=0.15,
epochs=100,
callbacks=[tensorboardCNN2])