是否有可能使用来自tf-slim的mobilenet_v2与anaconda和jupyter笔记本电脑?

时间:2018-04-15 20:05:17

标签: tensorflow tf-slim tensorflow-slim

我的任务是在开始时利用tf-slim。我们应该使用预定义的架构和预训练权重来训练新模型。示例代码如下所示。

from tensorflow.contrib.slim.nets import inception
import tensorflow.contrib.slim as slim

我想使用mobilenet,但它似乎无法导入,因为它不可用。

import tensorflow.contrib.slim.nets
from tensorflow.contrib.slim.nets import mobilenet

input_tensor = tf.placeholder(tf.float32, shape=[None, height, width, channels], name="input_tensor")
with tf.contrib.slim.arg_scope(mobilenet_v2.training_scope()):
    logits, endpoints = mobilenet_v2.mobilenet(input_tensor)
  

ImportError:无法导入名称'mobilenet'

1 个答案:

答案 0 :(得分:2)

回答我自己的问题,因为作为Tensorflow的学生,这对我来说并不是很明显。

这个github page表示研究目录(移动网络所在)中的模型在tensorflow的发布分支中没有得到官方支持,因此在生产安装中不可用。

"研究模型。指向外部网站的链接。是研究人员在TensorFlow中实施的大量模型集合。它们没有得到官方支持或在发布分支中可用;由个体研究人员维护模型和/或提供问题和拉取请求的支持。"

但是,您可以通过在项目中包含目录来解决这个问题。事实上,我遇到了一个讨论,声明将代码复制到项目中是正式必要的。如果我能找到相同的论坛,我会更新答案。

import tensorflow as tf
from models.research.slim.nets.mobilenet import mobilenet_v2
input_tensor = tf.placeholder(tf.float32, shape=[None, 224, 224, 3], name="input_tensor")
with tf.contrib.slim.arg_scope(mobilenet_v2.training_scope()):
       logits, endpoints = mobilenet_v2.mobilenet(input_tensor)

此外,在mobilenet_v2.py中,还有一些相对python的import语句。他们只是假设他们是在models / research / slim目录中运行,因此试图导入nets.mobilenet。只需更改那些以使用完全限定的包名称,例如使用models.research.slim。

预先填充网络
from models.research.slim.nets.mobilenet import conv_blocks as ops
from models.research.slim.nets.mobilenet import mobilenet as lib