提交 ebdf1648 编写于 作者: W wuzewu

update docs

上级 3e43062b
# 命令行
Paddle Hub为Module的管理和使用提供了命令行工具,目前命令行支持以下9个命令:
* install
* uninstall
* show
* download
* search
* list
* run
* help
* version
## install
install命令用于将
## uninstall
## show
## download
## search
## list
## run
## help
## version
* `install`:用于将Module安装到本地,默认安装在${USER_HOME}/.hub/module目录下,当一个Module安装到本地后,用户可以通过其他命令操作该Module(例如,使用该Module进行预测),也可以使用PaddleHub提供的python API,将Module应用到自己的任务中,实现迁移学习
* `uninstall`:用于卸载本地Module
* `show`:用于查看Module的属性,包括Module的名字、版本、描述、作者等信息
* `download`:用于下载百度NLP工具包
* `search`:通过关键字在服务端检索匹配的Module,当你想要查找某个特定模型的Module时,使用search命令可以快速得到结果,例如`hub search ssd`命令,会查找所有包含了ssd字样的Module
* `list`:列出本地已经安装的Module
* `run`:用于执行Module的预测,需要注意的是,并不是所有的模型都支持预测(同样,也不是所有的模型都支持迁移学习)
* `help`:显示帮助信息
* `version`:显示版本信息
# 关于预测
PaddleHub尽量简化了用户在使用命令行预测时的理解成本,一般来讲,我们将预测分为NLP和CV两大类
## NLP类的任务
输入数据通过--input_text或者--input_file指定。以LAC(中文词性分析)为例子,可以通过以下两个命令实现单文本和多文本的预测
```shell
#单文本预测
hub run lac --input_text "今天是个好日子"
```
```shell
#多文本分析
hub run lac --input_file test.csv
```
其中test.csv的格式为
```
今天是个好日子
天气预报说今天要下雨
下一班地铁马上就要到了
……更多行……
```
## CV类的任务
输入数据通过--input_path或者--input_file指定。以SSD(目标检测)为例子,可以通过以下两个命令实现单张图片和多张图片的预测
```shell
#单张照片预测
hub run ssd_mobilenet_pascal --input_text test.jpg
```
```shell
#多文本分析
hub run ssd_mobilenet_pascal --input_file test.csv
```
其中test.csv的格式为
```
cat.jpg
dog.jpg
person.jpg
……更多行……
```
# Transfer Learning
Transfer Learning是xxxx
更多关于Transfer Learning的知识,请参考
## 简述
Transfer Learning是属于机器学习的一个子研究领域,该研究领域的目标在于利用数据、任务、或模型之间的相似性,将在旧领域学习过的知识,迁移应用于新领域中
基于以下几个原因,迁移学习吸引了很多研究者投身其中:
* 一些研究领域只有少量标注数据,且数据标注成本较高,不足以训练一个足够鲁棒的神经网络
* 大规模神经网络的训练依赖于大量的计算资源,这对于一般用户而言难以实现
* 应对于普适化需求的模型,在特定应用上表现不尽如人意
目前在深度学习领域已经取得了较大的发展,本文让用户了解如何快速使用PaddleHub进行迁移学习。 更多关于Transfer Learning的知识,请参考:
http://cs231n.github.io/transfer-learning/
https://papers.nips.cc/paper/5347-how-transferable-are-features-in-deep-neural-networks.pdf
http://ftp.cs.wisc.edu/machine-learning/shavlik-group/torrey.handbook09.pdf
## PaddleHub中的迁移学习
## CV教程
以猫狗分类为例子,我们可以快速的使用一个通过ImageNet训练过的ResNet进行finetune
```python
import paddle.fluid as fluid
import paddle_hub as hub
resnet = hub.Module(key = "resnet_v2_50_imagenet")
input_dict, output_dict, program = resnet.context(sign_name = "feature_map")
img_mode, img_size, img_order = resnet.data_config()
reader = hub.ImageClassifierReader(mode = img_mode, shape = img_shape, order = img_order, dataset = hub.dataset.flowers(), batch_size = 32)
with fluid.program_guard(program):
img = input_dict["image"]
feature_map = output_dict["feature_map"]
label = fluid.layers.data(name = "label", shape = [1], dtype = "int64")
task = hub.DNNClassifier(input = feature_map, hidden_units = [10], acts = ["softmax"])
finetune_config = {"epochs" : 100}
hub.finetune_and_eval(task = task, reader = reader.train(), config = finetune_config)
```
## NLP教程
```python
import paddle
import paddle.fluid as fluid
import paddle_hub as hub
resnet = hub.Module(key = "resnet_v2_50_imagenet")
input_dict, output_dict, program = resnet.context(sign_name = "feature_map")
img_mode, img_size, img_order = resnet.data_config()
reader = hub.ImageClassifierReader(mode = img_mode, shape = img_shape, order = img_order, dataset = hub.dataset.flowers(), batch_size = 32)
with fluid.program_guard(program):
img = input_dict["image"]
feature_map = output_dict["feature_map"]
label = fluid.layers.data(name = "label", shape = [1], dtype = "int64")
task = hub.DNNClassifier(input = feature_map, hidden_units = [10], acts = ["softmax"])
finetune_config = {"epochs" : 100}
hub.finetune_and_eval(task = task, reader = reader.train(), config = finetune_config)
def train():
resnet_module = hub.Module(name="resnet50_imagenet")
input_dict, output_dict, program = resnet_module.context(
sign_name="feature_map", trainable=True)
dataset = hub.dataset.DogCat()
data_reader = hub.ImageClassificationReader(
image_width=224, image_height=224, dataset=dataset)
with fluid.program_guard(program):
label = fluid.layers.data(name="label", dtype="int64", shape=[1])
img = input_dict["img"]
feature_map = output_dict["feature_map"]
# 运行配置
config = hub.RunConfig(
use_cuda=True,
num_epoch=10,
batch_size=32,
strategy=hub.finetune.strategy.DefaultFinetuneStrategy())
feed_list = [img.name, label.name]
# 构造多分类模型
task = hub.append_mlp_classifier(
feature=feature_map, label=label, num_classes=dataset.num_labels)
# finetune
hub.finetune_and_eval(
task, feed_list=feed_list, data_reader=data_reader, config=config)
if __name__ == "__main__":
train()
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册