user3452134
user3452134

Reputation: 380

How to define multiple filters in Tensorflow

I have small matrix 4*4, I want to filter it with two different filters in TensorFlow (1.8.0). I have an example with one filter (my_filter): I want to change the filter to

my_filter = tf.constant([0.2,0.5], shape=[2, 2, 3, 1])

One will be 2*2 all 0.25 other 2*2 all 0.5. But how to set the values?

This is my code:

import tensorflow as tf

import numpy as np
tf.reset_default_graph()
x_shape = [1, 4, 4, 1]
x_val = np.ones(shape=x_shape)
x_val[0,1,1,0]=5
print(x_val)

x_data = tf.placeholder(tf.float32, shape=x_shape)

my_filter = tf.constant(0.25, shape=[2, 2, 1, 1])
my_strides = [1, 2, 2, 1]
mov_avg_layer= tf.nn.conv2d(x_data, my_filter, my_strides,
padding='SAME', name='Moving_Avg_Window')

# Execute the operations
with tf.Session() as sess:
   #print(x_data.eval())  
   result =sess.run(mov_avg_layer,feed_dict={x_data: x_val})
   print("Filter: " , result)
   print("Filter: " , result.shape)
   sess.close()

Upvotes: 1

Views: 371

Answers (1)

edkeveked
edkeveked

Reputation: 18371

First option

The filter can also be defined as a placeholder

filter = tf.placeholder(filter_type, filter_shape)
...
with tf.Session() as sess:
 for i in range (number_filters) :
   result =sess.run(mov_avg_layer,feed_dict={x_data: x_val, filter: filter_val})

Second option

define a second filter in the graph

my_filter = tf.constant(0.25, shape=[2, 2, 1, 1])
my_filter2 = tf.constant(0.5, shape=[2, 2, 1, 1])

mov_avg_layer= tf.nn.conv2d(x_data, my_filter, my_strides,
padding='SAME', name='Moving_Avg_Window')

mov_avg_laye2= tf.nn.conv2d(x_data, my_filter2, my_strides,
padding='SAME', name='Moving_Avg_Window')

...
with tf.Session() as sess:
   result1, result2 =sess.run([mov_avg_layer1, mov_avg_layer2],feed_dict={x_data: x_val})
   sess.close()

Upvotes: 1

Related Questions