java右划线转移_Tensorflow - 转移学习实现(语义分割)

我正在努力实现CNN架构(FCN-8s模型,带有预训练的VGG16模型),用于对我自己的数据进行语义分割(2个类,因此,每个像素的二进制分类)

我打算如何解决这个问题:

使用砝码加载预先训练的模型

添加/删除其他更高层以转换为FCN

冻结预训练模型的较低层(在训练阶段不更新)

在特定数据集上训练网络

假设这是正确的,我如何在tensorflow模型上冻结下层? (我正在寻找具体的实现细节)我看过TensorFlow上的Inception重新训练教程,但我还不太确定 .

这是我想到的工作流程:

通过现有的预训练模型运行我的数据,并在不进行训练的情况下提取特征输出 . (怎么样?)

将这些特征输出馈送到包含更高层的另一个网络 - 并开始训练它 .

任何的意见都将会有帮助!

否则,如果我错了,我该怎么想呢?

更新:

我在下面提出了chasep255的建议,并尝试使用tf.stop_gradient以便在我的模型中使用"freeze" . 很明显,我的实施有问题 . 可能的替代/建议?

该模型基于FCN(用于语义分割)论文构建 . 我从模型体系结构中提取 logits ,即我的特征,我最初直接将其提供给 loss 函数,以使用softmax分类器将其最小化 . (每像素分类) deconv_1 是我的logits张量,形状 [batch, h, w, num_classes] = [1, 750, 750, 2] 实现:

logits = vgg_fcn.deconv_1

stopper = tf.stop_gradient(logits, 'stop_gradients')

loss = train_func.loss(stopper, labels_placeholder, 2)

with tf.name_scope('Optimizer'):

train_op = train_func.training(loss, FLAGS.learning_rate)

with tf.name_scope('Accuracy'):

eval_correct = train_func.accuracy_eval(logits, labels_placeholder)

accuracy_summary = tf.scalar_summary('Accuracy', eval_correct)

然后我运行以下Graph操作:

_, acc, loss_value = sess.run([train_op,eval_correct, loss], feed_dict=feed_dict)

当我这样运行训练周期时,没有优化损失值,绝大多数是因为我已经引入了 tf.stop_gradient Op .

有关详细信息,我的损失功能如下:

def loss(logits, labels, num_classes):

logits = tf.reshape(logits, [-1, num_classes])

#epsilon = tf.constant(value=1e-4)

#logits = logits + epsilon

labels = tf.to_int64(tf.reshape(labels, [-1]))

print ('shape of logits: %s' % str(logits.get_shape()))

print ('shape of labels: %s' % str(labels.get_shape()))

cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels, name='Cross_Entropy')

cross_entropy_mean = tf.reduce_mean(cross_entropy, name='xentropy_mean')

tf.add_to_collection('losses', cross_entropy_mean)

loss = tf.add_n(tf.get_collection('losses'), name='total_loss')

return loss

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值