Fundamentos pr谩cticos

1

Aplica Platzidoro en este curso y asegura el 茅xito de tu aprendizaje

2

Los fundamentos de machine learning que aprender谩s

3

Introducci贸n a Numpy

4

Introducci贸n y manipulaci贸n de datos con Pandas

5

Introducci贸n a ScikitLearn

6

Comandos b谩sicos de las librer铆as usadas en el curso (Numpy, Pandas y ScikitLearn)

Regresi贸n Lineal y Log铆stica

7

驴Qu茅 es la predicci贸n de datos?

8

Sobreajuste y subajuste en los datos

9

Regresi贸n lineal simple y regresi贸n lineal m煤ltiple

10

Regresi贸n lineal simple con Scikit-Learn: divisi贸n de los datos

11

Regresi贸n lineal simple con Scikit-Learn: creaci贸n del modelo

12

Regresi贸n log铆stica con Scikit-Learn: definici贸n y divisi贸n de datos

13

Regresi贸n log铆stica con Scikit-Learn: evaluaci贸n del modelo

14

Matriz de confusi贸n

15

PlatziDoro C谩psula 1

脕rboles de decisi贸n

16

驴Qu茅 es un 谩rbol de decisi贸n y c贸mo se divide?

17

Comprendiendo nuestro data set para la creaci贸n de un 谩rbol de decisi贸n

18

Creando un clasificador con Scikit-Learn

19

Entrenamiento del modelo de clasificaci贸n

20

Visualizaci贸n del 谩rbol de decisi贸n

K-Means

21

驴Qu茅 es K-Means?

22

Cargando el data set de Iris

23

Construcci贸n y evaluaci贸n del modelo con K-Means

24

Graficaci贸n del modelo

25

PlatziDoro C谩psula 2

Aprendizaje profundo

26

Introducci贸n al aprendizaje profundo

27

Conceptos b谩sicos de Tensor Flow

28

Red neuronal convolucional

29

Conociendo el set de datos para la creaci贸n de la red neuronal

30

Crea y entrena tu primera red neuronal convolucional con Tensor Flow

31

Evaluaci贸n de la red convolucional

32

PlatziDoro C谩psula 3

Despedida

33

Recomendaciones para analizar correctamente tu problema

34

Siguientes pasos para continuar aprendendiendo de Machine Learning

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Crea y entrena tu primera red neuronal convolucional con Tensor Flow

30/34
Recursos

Aportes 31

Preguntas 8

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

para los que trabajan con jupyter note hay que cambiar tf.train.AdamOptimizer() por tf.optimizers.Adam()

Explicacion del funcionamiento de las capas que usamos.

La primera capa de esta red, tf.keras.layers.Flatten, transforma el formato de las imagenes de un arreglo bi-dimensional (de 28 por 28 pixeles) a un arreglo uni dimensional (de 28*28 pixeles = 784 pixeles). Observe esta capa como una capa no apilada de filas de pixeles en la misma imagen y alineandolo. Esta capa no tiene parametros que aprender; solo reformatea el set de datos.

Despues de que los pixeles estan 鈥渁planados鈥, la secuencia consiste de dos capastf.keras.layers.Dense. Estas estan densamente conectadas, o completamente conectadas. La primera capa Dense tiene 128 nodos (o neuronas). La segunda (y ultima) capa es una capa de 10 nodos softmax que devuelve un arreglo de 10 probabilidades que suman a 1. Cada nodo contiene una calificacion que indica la probabilidad que la actual imagen pertenece a una de las 10 clases.

Estoy un poco decepcionado de este curso debido a que ya conozco un poco del tema y no estamos trabajando con una red neuronal convolucional, en la clase introductoria del m贸dulo la profesora explic贸 algo sobre c贸mo realmente funciona una red convolucional y despu茅s en esta clase pr谩ctica implementa una red neuronal fully conected a煤n cunado el tema de la clase no sugiere eso, adem谩s la profesora no explica correctamente partes complejas y claves si queremos entender realmente el machine learning como los optimizadores (adam en este caso), cuando lo implementa dice (no recuerdo bien) q es debido a la complejidad de la red porque hab铆an varias neuronas en la capa de salida (10 si no me equivoco ) me parece q es bastante pobre el curso sinceramente. Sin 谩nimos de ofender y con el mayor respeto expreso mi sentir. Gracias

Por si quedan dudas de los conceptos:
鈥淟oss function 鈥擡sto mide que tan exacto es el modelo durante el entrenamiento. Quiere minimizar esta funcion para dirigir el modelo en la direccion adecuada.
Optimizer 鈥 Esto es como el modelo se actualiza basado en el set de datos que ve y la funcion de perdida.
Metrics 鈥 Se usan para monitorear los pasos de entrenamiento y de pruebas. El siguiente ejemplo usa accuracy (exactitud) , la fraccion de la imagenes que son correctamente clasificadas.鈥(TensorFlow)
https://www.tensorflow.org/tutorials/keras/classification

La arquitectura de red mostrada en clase no corresponde a una red neuronal convolucional, solo se muestran tres capas, la primera aplica el flatten necesario para las dos siguiente capas que realizan la siguiente operaci贸n:

output = activation(dot(input, kernel) + bias)

Que es la multiplicaci贸n de matrices t铆pica de las capas lineales de una red neuronal.

Pensaba que en la siguiente clase ir铆an a corregir lo dicho en esta o implementar la convoluci贸n con el fin de generar conclusiones a modo de comparativa, pero no. Por lo tanto no entiendo el motivo de explicar esto como redes neuronales convolucionales.

cuando escrib铆 la l铆nea 11,obten铆a un error. El error dec铆a que no exist铆a AdamOptimizer(). Entonces cambi茅

tf.train.AdamOptimizer()

por

tf.compat.v1.train.AdamOptimizer()

y ya funcion贸

A mi en el model.fit me hace el calculo sobre 1875 no sobre los 60000

Para los que pasen por aqui y no funcione la parte del compiler, est谩 deprecado AdamOptimizer, usen este c贸digo:

model.compile(optimizer = tf.keras.optimizers.Adam(),
              loss = 'sparse_categorical_crossentropy',
              metrics=['accuracy'])

Para los que les da error en la linea siguiente:

model.compile(optimizer=tf.AdamOptimizer(), loss = 'sparse_categorical_crossentropy', metrics=['accuracy'])

Deben cambiar lo siguiente, as铆 funciona:

model.compile(optimizer = tf.keras.optimizers.Adam(), loss = 'sparse_categorical_crossentropy', metrics=['accuracy'])

Por si tienen problemas con errores al llamar a las funciones, esto es debido a que en las actualizaciones de TensorFlow pudieron reubicar dichas funciones en otras secciones de la libreria.
Les comparto mi c贸digo, basado en la version 2.2.0 de TensorFlow

import tensorflow as tf
from tensorflow.keras.datasets import fashion_mnist
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Flatten, Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.nn import relu, softmax

fashion = fashion_mnist

(train_set, train_labels), (test_set, test_labels) = fashion.load_data()

layers = [Flatten(input_shape=(28,28)),
          Dense(128, activation=relu),
          Dense(10, activation=softmax)]

model = Sequential(layers)

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

model.fit(x=train_set, y=train_labels, epochs=5)

model.evaluate(x=test_set, y=test_labels)

model.predict(test_set)
model = keras.Sequential([
                          keras.layers.Flatten(input_shape=(28,28)),
                          keras.layers.Dense(128,activation = tf.nn.relu),
                          keras.layers.Dense(10,activation = tf.nn.softmax)])

model.compile(
    optimizer = tf.train.AdamOptimizer(),
    loss = 'sparse_categorical_crossentropy',
    metrics = ['accuracy']
)

model.fit(train_images,train_labels,epochs = 5)

test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Accuracy ', test_acc)

Me hace el entrenamiento con 1875, elementos, y el test con 313, no entiendo porque toma n煤meros tan peque帽os

La funcion de activacion Relu, hace que cuando se le mete un valor menor a 0, devuelve 0 y cuando se le mete un valor mayor a 0, actua como una funcion lineal normal.
La funcion de activacion Softmax transforma los numeros reales, en una distribucion de probabilidad,por ejemplo, 0.3 T-Shirt, 0.5 Sandal y 0.9 Goat, ya que goat es la que tiene mayor probabilidad es la que va a quedar

Comparto un ejemplo de una verdadera red neuronal convolucional para la clasificaci贸n de im谩genes: https://www.tensorflow.org/tutorials/images/cnn
El ejemplo de esta clase es un red neuronal tradicional, donde todas las neuronas de las capas de entrada y salida est谩n conectadas con la capa oculta (tipo 鈥渄ense鈥) de 128 neuronas.

https://youtu.be/3LPzbMzU_AM De nada.

Desde la creaci贸n del curso, el optimizador Adam, ha ido cambiando sintaxis, dejo 茅sta que es la que me funcion贸 en nov/2020:

model.compile(optimizer = tf.optimizers.Adam(), loss = 鈥榮parse_categorical_crossentropy鈥, metrics = [鈥榓ccuracy鈥橾)

Me sali贸 este error al momento de calcular la precisi贸n


ValueError                                Traceback (most recent call last)

<ipython-input-181-65aaef7d17de> in <module>()
----> 1 test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
      2 # print('Precisi贸n: ', test_acc)

3 frames

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data_adapter.py in __init__(self, x, y, sample_weights, sample_weight_modes, batch_size, epochs, steps, shuffle, **kwargs)
    280             label, ", ".join(str(i.shape[0]) for i in nest.flatten(data)))
    281       msg += "Please provide data which shares the same first dimension."
--> 282       raise ValueError(msg)
    283     num_samples = num_samples.pop()
    284 

ValueError: Data cardinality is ambiguous:
  x sizes: 60000
  y sizes: 10000
Please provide data which shares the same first dimension.

Si quieren aprender el porque esta red no es convolucional y que si es una red convolucional les dejo este video que lo explica:
Redes Neuronales Convolucionales - Clasificaci贸n avanzada de im谩genes con IA / ML (CNN)

model.compile(optimizer = tf.keras.optimizers.Adam(), loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])

tf.train.AdamOptimizer() = tf.optimizers.Adam() por si acaso

Buenas, 驴alguien sabr铆a indicar un v铆deo de Youtube donde expliquen mejor este tema? Entiendo la teor铆a pero luego no entiendo qu茅 hace el c贸digo que escribe. Muchas gracias de antemano.

tf.optimizers.Adam()

Con cada ejecuci贸n el Accuracy cambia.

  • Configurar el modelo con las funciones de activaci贸n de las neuronas, y las capas de neuronas que deseamos.
  • Compilar el modelo.
  • Entrenar el modelo.
  • Testear el accuracy del modelo con los datos de test.

Le di epochs=100

model.fit(train_images, train_labels, epochs = 100)

Y obtuve un accuracy de entrenamiento al 97%

Prob茅 en el dataset de prueba, y obtuve una mejor铆a solo del 2%

10000/10000 [==============================] - 0s 35us/sample - loss: 0.8131 - acc: 0.8867
Accuracy 0.8867

Por otro lado, creo que epochs, es la cantidad de veces que entrenas al modelo

Quedo atentos a sus comentarios y conclusiones

Para los que luchan todav铆a con los conceptos de las redes neuronales como Loss function, optimizer, backpropagation, etc鈥 les dejo el primer video de una serie donde se explica muy brevemente y con ejemplos didacticos. Link del video

Tensorflow se actualiz贸 y muchos m茅todos cambiaron de nombre. La verdad es un complique que haya pasado eso. El caso es que buscan el error en gogole y casi siempre muestran como solucionarlo. Otro aporte que hago, es que tambi茅n se puede escoger con cual versi贸n de TF se va a trabajar en el notebook. as铆: %tensorflow_version 1.x
as铆 los c贸digos anteriores corren.
Y esta es la nueva sintaxis para el optimizador: tf.optimizers.Adam()

**Dos dudas:
**
Epoch es proporcionan al Accuracy 驴A mayor n霉mero de Epoch el Accuracy tendera a uno?

驴Existe un n煤mero 贸ptimo de epochs o alg煤n algoritmo para dar con este?

Quiza les sirve, quizas no.
Pero solucione lo del optimizer asi:

optimizer=tf.optimizers.Adam()```

Alguien sabe porque mi accuracy es menor (0.6) si el codigo es exactamente el mismo?
De antemano gracias