@@ -0,0 +1,3 @@ | |||||
# MindsporeLeNet | |||||
Encoding image into vectors using mindspore |
@@ -0,0 +1,37 @@ | |||||
import numpy as np | |||||
from jina.executors.encoders.frameworks import BaseMindsporeEncoder | |||||
class MindsporeLeNet(BaseMindsporeEncoder): | |||||
""" | |||||
:class:`MindsporeLeNet` Encoding image into vectors using mindspore. | |||||
""" | |||||
def encode(self, data, *args, **kwargs): | |||||
# data is B x D, where D = 28 * 28 | |||||
# LeNet only accepts BCHW format where H=W=32 | |||||
# hence we need to do some simple transform | |||||
from mindspore import Tensor | |||||
data = np.pad(data.reshape([-1, 1, 28, 28]), | |||||
[(0, 0), (0, 0), (0, 4), (0, 4)]).astype('float32') | |||||
return self.model(Tensor(data)).asnumpy() | |||||
def get_cell(self): | |||||
from .lenet.src.lenet import LeNet5 | |||||
class LeNet5Embed(LeNet5): | |||||
def construct(self, x): | |||||
x = self.conv1(x) | |||||
x = self.relu(x) | |||||
x = self.max_pool2d(x) | |||||
x = self.conv2(x) | |||||
x = self.relu(x) | |||||
x = self.max_pool2d(x) | |||||
x = self.flatten(x) | |||||
x = self.fc1(x) | |||||
x = self.relu(x) | |||||
x = self.fc2(x) | |||||
x = self.relu(x) | |||||
return x | |||||
return LeNet5Embed() |
@@ -0,0 +1,25 @@ | |||||
# 三分钟教你用MindSpore和Jina搭建一个服装搜索系统 | |||||
## 准备环境 | |||||
- Mac OS or Linux | |||||
- Python 3.7, 3.8 | |||||
- [Jina 0.7+ with Hub extenstion (i.e. `pip install "jina[hub]"`)](https://get.jina.ai) | |||||
- Docker | |||||
## 执行步骤 | |||||
### 1.创建Jina Hub 镜像 | |||||
```bash | |||||
git clone https://github.com/hanxiao/mindspore-jina-example.git | |||||
jina hub build MindsporeLeNet/ --pull --test-uses | |||||
``` | |||||
### 2. Use in Jina Hello-World | |||||
``` | |||||
jina hello-world --uses-index helloworld.flow.index.yml --uses-query helloworld.flow.query.yml | |||||
``` | |||||
## 参考博客 |
@@ -0,0 +1,12 @@ | |||||
!Flow | |||||
with: | |||||
logserver: $WITH_LOGSERVER | |||||
compress_hwm: 1024 | |||||
pods: | |||||
encode: | |||||
uses: jinahub/pod.encoder.mindsporelenet:0.0.1 | |||||
parallel: $PARALLEL | |||||
index: | |||||
uses: $RESOURCE_DIR/helloworld.indexer.yml | |||||
shards: $SHARDS | |||||
separated_workspace: true |
@@ -0,0 +1,16 @@ | |||||
!Flow | |||||
with: | |||||
read_only: true # better add this in the query time | |||||
logserver: $WITH_LOGSERVER | |||||
compress_hwm: 1024 | |||||
pods: | |||||
encode: | |||||
uses: jinahub/pod.encoder.mindsporelenet:0.0.1 | |||||
parallel: $PARALLEL | |||||
index: | |||||
uses: $RESOURCE_DIR/helloworld.indexer.yml | |||||
shards: $SHARDS | |||||
separated_workspace: true | |||||
polling: all | |||||
uses_after: $RESOURCE_DIR/helloworld.reduce.yml | |||||
timeout_ready: 100000 # larger timeout as in query time will read all the data |