Our classification task contains two categories, so the new softmax layer of the network will consist of 2 categories instead of 1,000 categories. Here is the input tensor, which is a 227×227×3 image, and the output tensor of rank 2:
n_classes = 2 train_x = zeros((1, 227,227,3)).astype(float32) train_y = zeros((1, n_classes))
Fine-tuning implementation consists of truncating the last layer (the softmax layer) of the pre-trained network and replacing it with a new softmax layer that is relevant to our problem.
For example, the pre-trained network on ImageNet comes with a softmax layer with 1,000 categories.
The following code snippet defines the new softmax layer,
fc8W = tf.Variable(tf.random_normal\ ([4096, n_classes]),\ ...