【发布时间】:2020-07-24 06:20:26
【问题描述】:
我想使用多类 RBF SVM 作为我在 Tensorflow 中构建的 CNN 模型的最后一层。
我目前有以下内容。但不是最后一层,是否可以插入一个 SVM? 我有什么选择。 我发现 Tensorflow 有一个叫做随机傅立叶特征的东西,我可以使用内核方法来模拟 SVM?这是一个选项吗?如果是这样,我将如何将它实施到我目前拥有的东西中?
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)
【问题讨论】:
标签: tensorflow machine-learning neural-network svm