0 seguidores
0 seguidos
Con las ultimas versiones de TensorFlow indica que se debe usar el input-shape fuera de una capa
<span style="color: #6aa94f;"># Importando librería de TensorFlow</span>
<span style="color: #c586c0;">import</span> tensorflow <span style="color: #c586c0;">as</span> tf <span style="color: #6aa94f;"># Si se corre de manera local, debe descargarse la librería</span>
<span style="color: #6aa94f;"># Se selecciona el dataset desde Keras</span>
mnist = tf.keras.datasets.mnist
<span style="color: #6aa94f;"># x_train: Variable para entrenar el modelo</span>
<span style="color: #6aa94f;"># x_test: Variable para evaluar el modelo</span>
<span style="color: #6aa94f;"># y_train: Columna de la etiqueta para entrenar el modelo</span>
<span style="color: #6aa94f;"># y_test: Columna de la etiqueta para evaluar el modelo</span>
<span style="color: #dcdcdc;">(</span>x_train<span style="color: #dcdcdc;">,</span> y_train<span style="color: #dcdcdc;">),</span> <span style="color: #dcdcdc;">(</span>x_test<span style="color: #dcdcdc;">,</span> y_test<span style="color: #dcdcdc;">)</span> = mnist.load_data<span style="color: #dcdcdc;">()</span>
<span style="color: #6aa94f;"># Modelo secuencial de capas de la red neuronal</span>
model = tf.keras.models.Sequential<span style="color: #dcdcdc;">([</span>
<span style="color: #6aa94f;"><a href="/comunidad/publicaciones?q=%23tf" data-community-hashtag="true">#tf</a>.keras.layers.Flatten(input_shape=(28, 28)), # Entrada son imágenes de 28x28</span>
tf.keras.layers.Input<span style="color: #dcdcdc;">(</span>shape=<span style="color: #dcdcdc;">(</span><span style="color: #b5cea8;">28</span><span style="color: #dcdcdc;">,</span> <span style="color: #b5cea8;">28</span><span style="color: #dcdcdc;">)),</span> <span style="color: #6aa94f;"># Entrada son imágenes de 28x28</span>
tf.keras.layers.Flatten<span style="color: #dcdcdc;">(),</span>
tf.keras.layers.Dense<span style="color: #dcdcdc;">(</span><span style="color: #b5cea8;">128</span><span style="color: #dcdcdc;">,</span> activation=<span style="color: #ce9178;">'relu'</span><span style="color: #dcdcdc;">),</span> <span style="color: #6aa94f;"># Capa tipo densa, cuántas neuronas y la activación</span>
tf.keras.layers.Dropout<span style="color: #dcdcdc;">(</span><span style="color: #b5cea8;">0.2</span><span style="color: #dcdcdc;">),</span> <span style="color: #6aa94f;"># Limpiar</span>
tf.keras.layers.Dense<span style="color: #dcdcdc;">(</span><span style="color: #b5cea8;">10</span><span style="color: #dcdcdc;">,</span> activation=<span style="color: #ce9178;">'softmax'</span><span style="color: #dcdcdc;">)</span> <span style="color: #6aa94f;"># Softmax es función de activación común</span>
<span style="color: #dcdcdc;">])</span>
<span style="color: #6aa94f;"># Se define la optimización, la pérdida (rendimiento) y las métricas (exactitud)</span>
model.<span style="color: #dcdcaa;">compile</span><span style="color: #dcdcdc;">(</span>optimizer=<span style="color: #ce9178;">'adam'</span><span style="color: #dcdcdc;">,</span> <span style="color: #6aa94f;"># Existen varios tipos de optimizadores</span>
loss=<span style="color: #ce9178;">'sparse_categorical_crossentropy'</span><span style="color: #dcdcdc;">,</span>
metrics=<span style="color: #dcdcdc;">[</span><span style="color: #ce9178;">'accuracy'</span><span style="color: #dcdcdc;">])</span>
<span style="color: #6aa94f;"># Para entrenar el modelo</span>
model.fit<span style="color: #dcdcdc;">(</span>x_train<span style="color: #dcdcdc;">,</span> y_train<span style="color: #dcdcdc;">,</span> epochs=<span style="color: #b5cea8;">5</span><span style="color: #dcdcdc;">)</span> <span style="color: #6aa94f;"># epochs: Entrenar 5 veces, como ciclos de entrenamiento</span>
<span style="color: #6aa94f;"># Evaluación de rendimiento</span>
model.evaluate<span style="color: #dcdcdc;">(</span>x_test<span style="color: #dcdcdc;">,</span> y_test<span style="color: #dcdcdc;">,</span> verbose=<span style="color: #b5cea8;">2</span><span style="color: #dcdcdc;">)</span>
Así quedaría con el cambio
Igual que en clases anteriores de este mismo curso de GO, las librerías o funciones que usan estan desactualizadas. Deberían de tener contenido más al día. Por ejemplo acá usan "ioutil" para leer los archivos y actualmente eso cambio a "os"
Excelente clase solo tengo una duda, en el curso de programación orientada a objetos con GO explicaste que las interfaces deben terminar en "er" y diste ejemplos como Writer o Stringer; pero en este video creaste la interfaz como Storage. Entonces no hay problema si un interfaz no cumple con el "er" del final ?
Por favor actualizar esta clase porque con los pasos que se indican en el video no permite hacer el import del modulo desde github