Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get the value of some weights in a model trained by TensorFlow

Tags:

tensorflow

I have trained a ConvNet model with TensorFlow, and I want to get a particular weight in layer. For example in torch7 I would simply access model.modules[2].weights. to get the weights of layer 2. How would I do the same thing in TensorFlow?

like image 398
S.AMEEN Avatar asked Mar 24 '16 04:03

S.AMEEN


People also ask

How do you visualize model weights in TensorFlow?

To visualize the weights, you can use a tf. image_summary() op to transform a convolutional filter (or a slice of a filter) into a summary proto, write them to a log using a tf. train. SummaryWriter , and visualize the log using TensorBoard.

How do you get weights in TF layers dense?

Dense(...) . Once you have a handle to this layer object, you can use all of its functionality. For obtaining the weights, just use obj. trainable_weights this returns a list of all the trainable variables found in that layer's scope.


2 Answers

In TensorFlow, trained weights are represented by tf.Variable objects. If you created a tf.Variable—e.g. called v—yourself, you can get its value as a NumPy array by calling sess.run(v) (where sess is a tf.Session).

If you do not currently have a pointer to the tf.Variable, you can get a list of the trainable variables in the current graph by calling tf.trainable_variables(). This function returns a list of all trainable tf.Variable objects in the current graph, and you can select the one that you want by matching the v.name property. For example:

# Desired variable is called "tower_2/filter:0". var = [v for v in tf.trainable_variables() if v.name == "tower_2/filter:0"][0] 
like image 177
mrry Avatar answered Sep 28 '22 08:09

mrry


2.0 Compatible Answer: If we build a Model using Keras Sequential API, we can get the Weights of the Model using the code mentioned below:

!pip install tensorflow==2.1  from tf.keras import Sequential  model = Sequential()  model.add(Conv2D(filters=conv1_fmaps, kernel_size=conv1_ksize,                          strides=conv1_stride, padding=conv1_pad,                          activation=tf.nn.relu, input_shape=(height, width, channels),                     data_format='channels_last'))  model.add(MaxPool2D(pool_size = (2,2), strides= (2,2), padding="VALID"))  model.add(Dropout(0.25))  model.add(Flatten())  model.add(Dense(units = 32, activation = 'relu'))  model.add(Dense(units = 10, activation = 'softmax'))  model.summary()  print(model.trainable_variables)  

The Last Statement, print(model.trainable_variables), will return the Weights of the Model as shown below:

    [<tf.Variable 'conv2d/kernel:0' shape=(3, 3, 1, 32) dtype=float32>,  <tf.Variable 'conv2d/bias:0' shape=(32,) dtype=float32>, <tf.Variable  'dense/kernel:0' shape=(6272, 32) dtype=float32>, <tf.Variable 'dense/bias:0'  shape=(32,) dtype=float32>, <tf.Variable 'dense_1/kernel:0' shape=(32, 10)  dtype=float32>, <tf.Variable 'dense_1/bias:0' shape=(10,) dtype=float32>] 
like image 22
Tensorflow Support Avatar answered Sep 28 '22 06:09

Tensorflow Support