From ad62810f3802bf0d544c5473c72af91dd10c5d8f Mon Sep 17 00:00:00 2001
From: ShenYuhan
Date: Fri, 29 Jan 2021 17:09:16 +0800
Subject: [PATCH] add docs for text
---
demo/components/image_matrix_test.py | 53 +++++++++++++++++++
demo/components/test.sh | 11 ++++
demo/components/text_test.py | 34 +++++++++++++
docs/components/README.md | 75 +++++++++++++++++++++++++++
docs/components/UserGuide-en.md | 76 ++++++++++++++++++++++++++++
5 files changed, 249 insertions(+)
create mode 100644 demo/components/image_matrix_test.py
create mode 100644 demo/components/test.sh
create mode 100644 demo/components/text_test.py
diff --git a/demo/components/image_matrix_test.py b/demo/components/image_matrix_test.py
new file mode 100644
index 00000000..496542a8
--- /dev/null
+++ b/demo/components/image_matrix_test.py
@@ -0,0 +1,53 @@
+# Copyright (c) 2021 VisualDL Authors. All Rights Reserve.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# =======================================================================
+
+# coding=utf-8
+
+import numpy as np
+from PIL import Image
+from visualdl import LogWriter
+
+
+def random_crop(img):
+ """Get random block of img, which size is 100x100.
+ """
+ img = Image.open(img)
+ w, h = img.size
+ random_w = np.random.randint(0, w - 100)
+ random_h = np.random.randint(0, h - 100)
+ r = img.crop((random_w, random_h, random_w + 100, random_h + 100))
+ return np.asarray(r)
+
+
+if __name__ == '__main__':
+ imgs = []
+ # 获取8张图像
+ for step in range(8):
+ img = random_crop("../../docs/images/dog.jpg")
+ imgs.append(img)
+ imgs = np.array(imgs)
+
+ with LogWriter(logdir='./log/image_matrix_test/train') as writer:
+ writer.add_image(tag='doges', step=0, img=imgs[0])
+ # 合成长宽尽量接近的图形矩阵,本例生成3X3的矩阵
+ writer.add_image_matrix(tag='doges', step=1, imgs=imgs, rows=-1)
+ # 合成长为1的图形矩阵,本例生成1x8的矩阵
+ writer.add_image_matrix(tag='doges', step=2, scale=10, imgs=imgs, rows=1)
+ # 合成长为2的图形矩阵,本例生成2X4的矩阵
+ writer.add_image_matrix(tag='doges', step=3, scale=10, imgs=imgs, rows=2)
+ # 合成长为3的图形矩阵,本例生成3X3的矩阵
+ writer.add_image_matrix(tag='doges', step=4, imgs=imgs, rows=3)
+ # 合成长为4的图形矩阵,本例生成4X2的矩阵
+ writer.add_image_matrix(tag='doges', step=5, imgs=imgs, rows=4)
diff --git a/demo/components/test.sh b/demo/components/test.sh
new file mode 100644
index 00000000..095bab9b
--- /dev/null
+++ b/demo/components/test.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+python scalar_test.py
+python image_test.py
+python image_matrix_test.py
+python histogram_test.py
+python high_dimensional_test.py
+python audio_test.py
+python text_test.py
+python pr_curve_test.py
+python roc_curve_test.py
+
diff --git a/demo/components/text_test.py b/demo/components/text_test.py
new file mode 100644
index 00000000..aecbabe6
--- /dev/null
+++ b/demo/components/text_test.py
@@ -0,0 +1,34 @@
+# Copyright (c) 2021 VisualDL Authors. All Rights Reserve.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# =======================================================================
+
+# coding=utf-8
+
+from visualdl import LogWriter
+
+if __name__ == '__main__':
+ texts = [
+ '上联: 众 佛 群 灵 光 圣 地 下联: 众 生 一 念 证 菩 提',
+ '上联: 乡 愁 何 处 解 下联: 故 事 几 时 休',
+ '上联: 清 池 荷 试 墨 下联: 碧 水 柳 含 情',
+ '上联: 既 近 浅 流 安 笔 砚 下联: 欲 将 直 气 定 乾 坤',
+ '上联: 日 丽 萱 闱 祝 无 量 寿 下联: 月 明 桂 殿 祝 有 余 龄',
+ '上联: 一 地 残 红 风 拾 起 下联: 半 窗 疏 影 月 窥 来'
+ ]
+ with LogWriter(logdir="./log/text_test/train") as writer:
+ for step in range(len(texts)):
+ writer.add_text(tag="output/1", step=step, text_string=texts[step])
+ writer.add_text(tag="output/2", step=step, text_string=texts[step])
+ writer.add_text(tag="output/2/3", step=step, text_string=texts[step])
+ writer.add_text(tag="output/2/4", step=step, text_string=texts[step])
diff --git a/docs/components/README.md b/docs/components/README.md
index 05a45629..91cd1e97 100644
--- a/docs/components/README.md
+++ b/docs/components/README.md
@@ -18,6 +18,7 @@ VisualDL 是一个面向深度学习任务设计的可视化工具。VisualDL
| [PR Curve](#PR-Curve--PR曲线组件) | 折线图 | 权衡精度与召回率之间的平衡关系 |
| [ROC Curve](#ROC-Curve--ROC曲线组件) | 折线图 | 展示不同阈值下的模型表现 |
| [High Dimensional](#High-Dimensional--数据降维组件) | 数据降维 | 将高维数据映射到 2D/3D 空间来可视化嵌入,便于观察不同数据的相关性 |
+| [Text](#Text--文本组件) | 文本 | 展示文本,可用于查看NLP任务的中间输出 |
同时,VisualDL提供可视化结果保存服务,通过 [VDL.service](#vdlservice) 生成链接,保存并分享可视化结果
@@ -880,6 +881,80 @@ visualdl --logdir ./log --port 8080
+## Text--文本组件
+
+### 介绍
+
+Text将记录的文本进行展示,便于查看NLP任务中间输出的文本结果。
+
+### 记录接口
+
+Text组件的记录接口如下:
+
+```python
+add_text(self, tag, text_string, step=None, walltime=None)
+```
+
+接口参数说明如下:
+
+| 参数 | 格式 | 含义 |
+| -------------- | --------------------- | ------------------------------------------- |
+| tag | string | 记录指标的标志,如`train/loss`,不能含有`%` |
+| text_string | string | 文本字符串 |
+| step | int | 记录的步数 |
+| walltime | int | 记录数据的时间戳,默认为当前时间戳 |
+
+### Demo
+
+下面展示了使用 Text 组件记录数据的示例,代码见[Text组件](https://github.com/PaddlePaddle/VisualDL/blob/develop/demo/components/text_test.py)
+
+```python
+from visualdl import LogWriter
+if __name__ == '__main__':
+ texts = [
+ '上联: 众 佛 群 灵 光 圣 地 下联: 众 生 一 念 证 菩 提',
+ '上联: 乡 愁 何 处 解 下联: 故 事 几 时 休',
+ '上联: 清 池 荷 试 墨 下联: 碧 水 柳 含 情',
+ '上联: 既 近 浅 流 安 笔 砚 下联: 欲 将 直 气 定 乾 坤',
+ '上联: 日 丽 萱 闱 祝 无 量 寿 下联: 月 明 桂 殿 祝 有 余 龄',
+ '上联: 一 地 残 红 风 拾 起 下联: 半 窗 疏 影 月 窥 来'
+ ]
+ with LogWriter(logdir="./log/text_test/train") as writer:
+ for step in range(len(texts)):
+ writer.add_text(tag="output", step=step, text_string=texts[step])
+```
+
+运行上述程序后,在命令行执行
+
+```shell
+visualdl --logdir ./log --port 8080
+```
+
+接着在浏览器打开`http://127.0.0.1:8080`,即可查看Text
+
+
+
+
+
+### 功能操作说明
+
+- 可搜索文本标签显示对应文本数据
+
+
+
+
+
+- 可搜索数据流标签显示对应数据流数据
+
+
+
+
+
+- 可折叠标签
+
+
+
+
## VDL.service
diff --git a/docs/components/UserGuide-en.md b/docs/components/UserGuide-en.md
index 5f100130..a8a9b644 100644
--- a/docs/components/UserGuide-en.md
+++ b/docs/components/UserGuide-en.md
@@ -803,6 +803,82 @@ Then, open the browser and enter the address`http://127.0.0.1:8080` to view:
+## Text
+
+### Introduction
+
+Text displays the recorded text so that you can view the text result output in the middle of the NLP task.
+
+### Record Interface
+
+The interface of the Text is shown as follows:
+
+```python
+add_text(self, tag, text_string, step=None, walltime=None)
+```
+
+The interface parameters are described as follows:
+
+| parameter | format | meaning |
+| -------------- | --------------------- | ------------------------------------------- |
+| tag | string | Record the name of the image data,e.g.train/loss. Notice that the name cannot contain `%` |
+| text_string | string | Value of text |
+| step | int | Record the training steps |
+| walltime | int | Record the time-stamp of the data, and the default is the current time-stamp |
+
+### Demo
+
+The following shows an example of how to use Text component, and script can be found in [Text Demo](../../demo/components/text_test.py)
+
+```python
+from visualdl import LogWriter
+if __name__ == '__main__':
+ texts = [
+ '上联: 众 佛 群 灵 光 圣 地 下联: 众 生 一 念 证 菩 提',
+ '上联: 乡 愁 何 处 解 下联: 故 事 几 时 休',
+ '上联: 清 池 荷 试 墨 下联: 碧 水 柳 含 情',
+ '上联: 既 近 浅 流 安 笔 砚 下联: 欲 将 直 气 定 乾 坤',
+ '上联: 日 丽 萱 闱 祝 无 量 寿 下联: 月 明 桂 殿 祝 有 余 龄',
+ '上联: 一 地 残 红 风 拾 起 下联: 半 窗 疏 影 月 窥 来'
+ ]
+ with LogWriter(logdir="./log/text_test/train") as writer:
+ for step in range(len(texts)):
+ writer.add_text(tag="output", step=step, text_string=texts[step])
+```
+
+After running the above program, developers can launch the panel by:
+
+```shell
+visualdl --logdir ./log --port 8080
+```
+
+Then, open the browser and enter the address`http://127.0.0.1:8080` to view:
+
+
+
+
+
+### Functional Instrucions
+
+- Developers can find the target text by searching corresponded tags.
+
+
+
+
+
+- Developers can find the target runs by searching corresponded tags.
+
+
+
+
+
+- Developers can fold the tab of text.
+
+
+
+
+
+
## VDL.service
### Introduction
--
GitLab