Tensorflow Hub:在微调期间评估模块

时间:2019-07-28 11:19:08

标签: python tensorflow tensorflow-hub

我在Tensorflow Hub: Fine-tune and evaluate的另一个场合问了这个问题,但没有得到任何答复。此外,我还提出了Github issue,但仍在等待答复。但是,如果有人可以指出正确的方向,我将再次提出这个问题。

我面临的问题与一段时间内优化Tensorflow Hub模块,在验证集上对其进行评估,再次对其进行微调,在验证集上对其进行评估并进行迭代有关。特别是,我想在训练模式下加载Tensorflow Hub模块,假设它是Resnet152:

resnet = hub.Module("https://tfhub.dev/google/imagenet/resnet_v2_152/feature_vector/3", trainable=True, tags={"train"})

有一个占位符,指示模块是处于training还是evaluation模式:

is_training = tf.placeholder_with_default(False, None)

从中提取特征,同时指示模块处于training还是evaluation模式并进一步传播它们:

features = resnet(images, signature="image_feature_vector", training=is_training)
dense = tf.layers.dense(features, 10)

然后,训练整个图的时间,然后对验证集执行评估:

epochs = 5
with tf.Session() as sess:
    for _ in epochs:
        sess.run(train_step, feed_dict={is_training:True})
        sess.run(val_step)

要正确执行此操作,必须有一种方法可以动态关闭模块的batch-normdropout,这是我不知道怎么做的方法。请注意,使用training=is_training是错误的,因为模块上的training属性不存在。

期待您的回答!

0 个答案:

没有答案