Перейти к содержимому

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])