Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aguathon 2019

Autor Maximiliano Greco
Github https://github.com/mmngreco/

1. Instalación

Conda

Definir un entorno virtual con conda.

conda env create -f environment.yml -n river
conda activate river

Docker

docker build -t aguathon .
docker run -it aguathon

2. Uso

Para entrenar modelos:

python CNN_feat2d.py -h  # para entrenar (no es necesario)

Para predecir con los modelos entrenados, solo hay que ejecutar:

python predict.py  # para predecir

3. Motivación

Para la prediccón se ha usado una red neuronal que mezcla una capa "convolucional", seguida de una capa oculta y una capa "full conected" de salida. Esta arquitectura es la que mejor me ha funcionado, otros proyectos que he visto, usan LSTM o GRU, sin embargo, esa aproximación no me ha dado buenos resultados con el añadido de que poco intuitivas y dificiles de entender.

Esta estructura la he definido a partir de la intuición y del ensayo error. La mayoria de trabajos y proyectos que he consulado no hacían uso de las redes recurrentes, en su lugar aplicaban redes neuronals o bien LSTM. Me pareció que merecía la pena hacer la prueba ya que estas redes se aplican en imagen fundamentalmente. En nuestro caso, a pesar de tener series temporales, parece que funcionan especialmente bien debido a la similitud dimensional con las imagenes, en cierta, forma estos río forman una "imagen" que queremos predecir.

Estructura de la RED

Puede ver este diagrama usando un renderizador de mermaid.

graph

En el script CNN_feat2d.py se encuentra la función build_model() que se encarga de crear la red de acuerdo a unos parámetros. Pero en esencia es lo siguiente:

model = Sequential()
model.add(Conv1D(
    filters=filters,
    kernel_size=kernel_size,
    activation='relu',
    input_shape=(n_steps, n_features),
))
model.add(Dense(
    NEURONS1,
    activation='relu',
    kernel_regularizer=L1L2,
))
model.add(Dense(
    n_features,
    activation='relu',
    kernel_regularizer=L1L2,
))
model.add(Flatten())
model.add(Dense(NEURONS_OUT))
model.compile(optimizer='adam', loss='mse')

About

Aguathon 2019 ITAINNOVA River Ebro Hackathon

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages