Я хотел бы использовать мультиклассовый RBF SVM в качестве последнего слоя моей модели CNN, встроенной в Tensorflow.
В настоящее время у меня есть следующее. Но вместо последнего слоя можно вставить SVM? Какие у меня варианты. Я обнаружил, что в Tensorflow есть нечто, называемое случайными функциями Фурье, где я могу использовать методы ядра для имитации c SVM? Это вариант? Если так, как бы я go о внедрении этого в то, что у меня есть в настоящее время?
net = x_noisy_image
# 1st convolutional layer.
net = tf.layers.conv2d(inputs=net, name='layer_conv1', padding='same',
filters=32, kernel_size=3, activation=tf.nn.relu)
# 2nd convolutional layer.
net = tf.layers.conv2d(inputs=net, name='layer_conv2', padding='same',
filters=32, kernel_size=3, activation=tf.nn.relu)
# Pooling layer
net = tf.layers.max_pooling2d(inputs=net, pool_size=2, strides=2)
# 3rd convolutional layer.
net = tf.layers.conv2d(inputs=net, name='layer_conv3', padding='same',
filters=64, kernel_size=3, activation=tf.nn.relu)
# 4th convolution layer
net = tf.layers.conv2d(inputs=net, name='layer_conv4', padding='same',
filters=64, kernel_size=3, activation=tf.nn.relu)
# Pooling layer
net = tf.layers.max_pooling2d(inputs=net, pool_size=2, strides=2)
# Flatten layer.This should eventually be replaced by:
# net = tf.layers.flatten(net)
net = tf.contrib.layers.flatten(net)
# 1st fully-connected / dense layer.
net = tf.layers.dense(inputs=net, name='layer_fc1',
units=200, activation=tf.nn.relu)
# 2nd fully-connected / dense layer.
net = tf.layers.dense(inputs=net, name='layer_fc2',
units=200, activation=tf.nn.relu)
# 3rd fully-connected / dense layer.
net = tf.layers.dense(inputs=net, name='layer_fc_out',
units=num_classes, activation=tf.nn.softmax)
# Unscaled output of the network.
logits = net
# Softmax output of the network.
y_pred = tf.nn.softmax(logits=logits)
# Loss measure to be optimized.
cross_entropy = tf.nn.softmax_cross_entropy_with_logits_v2(labels=y_true,
logits=logits)
loss = tf.reduce_mean(cross_entropy)
"""
Optimizer for Normal Training
"""
[var.name for var in tf.trainable_variables()]
optimizer = tf.train.AdamOptimizer(learning_rate=0.0001).minimize(loss)