Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What exactly does tf.keras.layers.Dense do?

Tags:

keras

My question

I'm using the Keras to build a convolutional neural network. I ran across the following:

model = tf.keras.Sequential()
model.add(layers.Dense(10*10*256, use_bias=False, input_shape=(100,)))

I'm curious - what exactly mathematically is going on here?

My best guess

My guess is that for input of size [100,N], the network will be evaluated N times, once for each training example. The Dense layer created by layers.Dense contains (10*10*256) * (100) parameters that will be updated during backpropagation.

like image 391
wheresmycookie Avatar asked Mar 21 '20 00:03

wheresmycookie


People also ask

What is dense layer in TF?

dense() is an inbuilt function of Tensorflow. js library. This function is used to create fully connected layers, in which every output depends on every input. Syntax: tf.layers.dense(args)

What does dense do in neural network?

In any neural network, a dense layer is a layer that is deeply connected with its preceding layer which means the neurons of the layer are connected to every neuron of its preceding layer. This layer is the most commonly used layer in artificial neural network networks.

How many dense layers do I need?

It's depend more on number of classes. For 20 classes 2 layers 512 should be more then enough. If you want to experiment you can try also 2 x 256 and 2 x 1024. Less then 256 may work too, but you may underutilize power of previous conv layers.

What is a dense layer in keras?

Keras - Dense Layer. Dense layer is the regular deeply connected neural network layer. It is most common and frequently used layer. Dense layer does the below operation on the input and return the output. dot represent numpy dot product of all input and its corresponding weights.

What are the basic building blocks of Keras?

Keras Layers are the functional building blocks of Keras Models. Each layer is created using numerous layer_ () functions. These layers are fed with input information, they process this information, do some computation and hence produce the output. Further, this output of one layer is fed to another layer as its input.

Do we need to specify the input shape in keras?

As the last two Dense layers do not need new input, we do not need to specify the input shape. Keras focuses on the idea of models. To build models, layers are their primary block. There is a wide variety of layers present in Keras. Each layer has its specific tasks.

How does the dot product work in keras?

Keras dense layer on the output layer performs dot product of input tensor and weight kernel matrix. A bias vector is added and element-wise activation is performed on output values.


Video Answer


1 Answers

Dense implements the operation: output = activation(dot(input, kernel) + bias) where activation is the element-wise activation function passed as the activation argument, kernel is a weights matrix created by the layer, and bias is a bias vector created by the layer (only applicable if use_bias is True).

Note: If the input to the layer has a rank greater than 2, then it is flattened prior to the initial dot product with kernel.

Example:

# as first layer in a sequential model:
model = Sequential()
model.add(Dense(32, input_shape=(16,)))
# now the model will take as input arrays of shape (*, 16)
# and output arrays of shape (*, 32)

# after the first layer, you don't need to specify
# the size of the input anymore:
model.add(Dense(32))

Arguments :

> units: Positive integer, dimensionality of the output space.

> activation: Activation function to use. If you don't specify anything,

> no activation is applied (ie. "linear" activation: a(x) = x).

> use_bias: Boolean, whether the layer uses a bias vector.

> kernel_initializer: Initializer for the kernel weights matrix.

> bias_initializer: Initializer for the bias vector. 

>kernel_regularizer:Regularizer function applied to the kernel weights matrix.
> bias_regularizer: Regularizer function applied to the bias vector.

> activity_regularizer: Regularizer function applied to the output of the layer (its "activation").. 

>kernel_constraint: Constraint function applied to the kernel weights matrix. 

>bias_constraint: Constraint function applied to the bias vector.

Input shape:

N-D tensor with shape: (batch_size, ..., input_dim). The most common situation would be a 2D input with shape (batch_size, input_dim).

Output shape:

N-D tensor with shape: (batch_size, ..., units). For instance, for a 2D input with shape (batch_size, input_dim), the output would have shape (batch_size, units).

like image 135
Amar Kumar Avatar answered Nov 15 '22 10:11

Amar Kumar