In an attempt to learn more about ML I decided to just jump in and try a project. Predicting channel geometry with a simple neural network.
All in all, I’m fairly sure I didn’t learn anything about equilibrium channel geometries, but I had some fun and learned an awful lot about machine learning and neural networks. A lot of the concepts I have been reading about for weeks finally clicked when I actually started to implement the simple network.
I decided to use the data from Li et al., 2015 [paper link here], which contains data for 231 river geometries.
The dataset has variable bankfull discharge, width, depth, channel slope and bed material D50 grain size.
We want to be able to predict the width, depth, and slope from the discharge and grain size alone. This is typically a problem, because we are trying to map two input features into three output features. In this case though, the model works because the output H and B are highly correlated.
The network is a simple ANN, with one hidden layer with 3 nodes. Trained with stochastic gradient descent. Training curve below.