PKlumpp
PKlumpp

Reputation: 5233

Add Placeholder to layer

I have a Tensorflow layer with 2 nodes. These are the output nodes of another 2 larger hidden layers. Now I want to add 2 new nodes to this layer, so I end up with 4 nodes in total, and do some last computation. The added nodes are implemented as Placeholders so far, and have a dynamic shape depending on the batch size. Here is a sketch of the net:

Nodes 3 and 4 have to be concatenated to nodes 1 and 2 from the middle layer

Now I want to concatenate Nodes 3 and 4 to the nodes 1 and 2 of the previously computed layer. I know there is tf.concat for this, but I don't understand how to do this correctly.

How do I add Placeholders of the same batchsize as the original net input to a specific layer?

EDIT:

When I use tf.concat over axis=1, I end up with the following problem:

z = tf.placeholder(tf.float32, shape=[None, 2])
Weight_matrix = weight_variable([4, 2])
bias = bias_variable([4, 2])
concat = tf.concat((dnn_out, z), 1)
h_fc3 = tf.nn.relu(tf.matmul(concat, Weight_matrix) + bias)

Adding the bias to the tf.matmul result throws an InvalidArgumentError: Incompatible shapes: [20,2] vs. [4,2].

Upvotes: 0

Views: 684

Answers (1)

benjaminplanche
benjaminplanche

Reputation: 15119

Since your data is batched, probably over the first dimension, you need to concatenate over the second (axis=1):

import tensorflow as tf
import numpy as np

dnn_output = tf.placeholder(tf.float32, (None, 2)) # replace with your DNN(input) result
additional_nodes = tf.placeholder(tf.float32, (None, 2))

concat = tf.concat((dnn_output, additional_nodes), axis=1)
print(concat)
# > Tensor("concat:0", shape=(?, 4), dtype=float32)
dense_output = tf.layers.dense(concat, units=2)
print(dense_output)
# > Tensor("dense/BiasAdd:0", shape=(?, 2), dtype=float32)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(dense_output, feed_dict={dnn_output: np.ones((5, 2)),
                                            additional_nodes: np.zeros((5, 2))}))

Upvotes: 1

Related Questions