I'm guessing that DNN
in the sense used in TensorFlow
means "deep neural network". But I find this deeply confusing since the notion of a "deep" neural network seems to be in wide use elsewhere to mean a network with typically several convolutional and/or associated layers (ReLU, pooling, dropout, etc).
In contrast, the first instance many people will encounter this term (in the tfEstimator Quickstart example code) we find:
# Build 3 layer DNN with 10, 20, 10 units respectively.
classifier = tf.estimator.DNNClassifier(feature_columns=feature_columns,
hidden_units=[10, 20, 10],
n_classes=3,
model_dir="/tmp/iris_model")
This sounds suspiciously shallow, and even more suspiciously like an old-style multilayer perceptron (MLP) network. However, there is no mention of DNN
as an alternative term on that close-to-definitive source. So is a DNN
in the TensorFlow tf.estimator
context actually an MLP
? Documentation on the hidden_units
parameter suggests this is the case:
That has MLP written all over it. Is this understanding correct? Is DNN
therefore a misnomer, and if so should DNNClassifier
ideally be deprecated in favour of MLPClassifier
? Or does DNN
stand for something other than deep neural network?
Give me your definition of "deep" neural network and you get your answer.
But yes, it is simply a MLP and a proper naming would be MLPclassifier indeed. But this does not sounds as cool as the current name.