Closed josprimen closed 4 years ago
Enlaces:
https://medium.com/@subhamoy.paul986/keras-sequential-api-72e45c39259b (Secuencia de uso Keras)
https://keras.io/getting-started/sequential-model-guide/ (guía keras modelo secuencial)
http://www.aprendemachinelearning.com/una-sencilla-red-neuronal-en-python-con-keras-y-tensorflow/ (Red Neuronal sencilla con keras y tensorflow)
https://github.com/fchollet/deep-learning-with-python-notebooks (Github libro F.Chollet Keras con código, explicaciones y ejemplos)
https://github.com/keras-team/keras/tree/master/examples (directorio de ejemplos ejericicos keras)
Con el tutorial del primer punto hemos podido saber cual es la secuencia de uso de la librearía keras para crear una red neuronal con esta.
Con el tutorial del segundo punto hemos creado nuestra primera red neuronal (compuerta XOR), hemos aprendido la forma secuencial, a añadir capas con nodos definidos, compilar, entrenar y ver resultados. Ademas, hemos aprendido a guardar un modelo entrenado y a cargarlo más tarde.
He tratado de modificar la red neuronal hecha para XOR para predicción de números binarios de cuatro dígitos a decimal. Nos encontramos con un problema de representación, gran diferencia entre números vecinos como el 7 y 8. El uso de Código Gray podría ser una posible solución.
Trabajando en un nuevo ejemplo propuesto en la documentación de Keras relacionado con IMDB.
Preparado el código referente a los datos.
Preparado el código del modelo secuencial y su compilación. Añadidas 2 capas de 16 nodos y una capa de salida con un nodo.
PD: En paralelo al proyecto se está realizando una memoria con explicaciones extendidas, aprendizaje y desarrollo del código.
Realizada la parte de código de entrenamiento y pruebas. En el ejemplo junta las dos partes, pero así no funcionaba y decidí separarlas, como en los demás ejemplos realizados. La ejecución ha sido exitosa.
Buscando información para conectar Pycharm con Github y poder hacer push del código al respositorio actual.
Enlaces:
Pasos necesarios:
Problemas encontrados: Había seleccionado git-cmd.exe en lugar de git.exe ya que no se encontraba en la ruta que especificaban los tutoriales.
Tipos de algoritmos
Normalizar datos ( https://stats.stackexchange.com/questions/70801/how-to-normalize-data-to-0-1-range )
Si tenemos Y que es una matriz de tamaño n filas y m columnas Y.shape devuelve (n,m) array = geek.arange(8) te crea un array del 0 al 7 array = geek.arange(8).reshape(2, 4) te crea una matriz de 2 filas y 4 columnas con ese array [[0 1 2 3] [4 5 6 7]]
Para tener los mismos números aleatorios hay que usar una semilla. Ejemplo:
import numpy as np
np.random.seed(8)
np.random.rand(3)
Out[4]: array([0.8734294 , 0.96854066, 0.86919454])
np.random.rand(3)
Out[5]: array([0.53085569, 0.23272833, 0.0113988 ])
np.random.seed(8)
np.random.rand(3)
Out[7]: array([0.8734294 , 0.96854066, 0.86919454])
ESTO VALE PARA TENER SIEMPRE EL MISMO VECTOR DE PESOS ALEATORIOS FINAL Y OBTENER LOS MISMO RESULTADOS EN LAS EJECUCIONES.
Con arrays de numpy si pones conjunto[2:4] te devuelve los arrays que estan en esas posiciones y si pones conjunto[2,0] te devuelve el número que está en la posición 0 del array 2. En este caso solo tenemos un numero en el array, por lo que si ponemos algo que no sea un ,0 nos va a dar error de index.
conjunto[2:6]
Out[75]:
array([[132.],
[129.],
[121.],
[135.]], dtype=float32)
TRATAMIENTO DE DATOS
drop zeros ->df.loc[~(df==0).all(axis=1)]
drop empty rows -> df.loc[~(df==' ').all(axis=1)]
GUARDAR DATOS TRATADOS EN UN CSV
dataset.to_csv('pollution.csv')
AL HACER ASIGNACIONES NO SE ESTÁ HACIENDO UNA COPIA DEL OBJETO, POR LO QUE SI CAMBIAS LO ASIGNADO, CAMBIA EL VALOR DE LA VARIABLE.
rendimiento = datos[:,0]
acidez = datos[:,1]
datos[:,0] = acidez
AHORA RENDIMIENTO SERÍA IGUAL A LA ACIDEZ
Solución: rendimiento = np.copy(datos[:,0])
Pasar conjunto de datos en JSON a csv With the pandas library, this is as easy as using two commands!
pandas.read_json()
To convert a JSON string to a pandas object (either a series or dataframe). Then, assuming the results were stored as df:
df.to_csv()
Realización de algunos proyectos básicos con el entorno para aprender a usarlo y adquirir facilidad.