Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
VisualDL
提交
3afc5b2d
V
VisualDL
项目概览
PaddlePaddle
/
VisualDL
1 年多 前同步成功
通知
88
Star
4655
Fork
642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
5
Wiki
分析
仓库
DevOps
项目成员
Pages
V
VisualDL
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
5
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
3afc5b2d
编写于
3月 23, 2018
作者:
J
Jeff Wang
提交者:
GitHub
3月 23, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Create text feature (#333)
* Add manual Save feature. * Fix the incorrect style * Add feature to record Text
上级
aa56f336
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
97 addition
and
3 deletion
+97
-3
visualdl/logic/pybind.cc
visualdl/logic/pybind.cc
+24
-3
visualdl/logic/sdk.cc
visualdl/logic/sdk.cc
+31
-0
visualdl/logic/sdk.h
visualdl/logic/sdk.h
+34
-0
visualdl/python/storage.py
visualdl/python/storage.py
+8
-0
未找到文件。
visualdl/logic/pybind.cc
浏览文件 @
3afc5b2d
...
...
@@ -74,9 +74,14 @@ PYBIND11_MODULE(core, m) {
#undef READER_ADD_HISTOGRAM
// clang-format on
.
def
(
"get_image"
,
[](
vs
::
LogReader
&
self
,
const
std
::
string
&
tag
)
{
.
def
(
"get_image"
,
[](
vs
::
LogReader
&
self
,
const
std
::
string
&
tag
)
{
auto
tablet
=
self
.
tablet
(
tag
);
return
vs
::
components
::
ImageReader
(
self
.
mode
(),
tablet
);
})
.
def
(
"get_text"
,
[](
vs
::
LogReader
&
self
,
const
std
::
string
&
tag
)
{
auto
tablet
=
self
.
tablet
(
tag
);
return
vs
::
components
::
ImageReader
(
self
.
mode
(),
tablet
);
return
vs
::
components
::
TextReader
(
tablet
);
});
// clang-format on
...
...
@@ -113,7 +118,11 @@ PYBIND11_MODULE(core, m) {
int
step_cycle
)
{
auto
tablet
=
self
.
AddTablet
(
tag
);
return
vs
::
components
::
Image
(
tablet
,
num_samples
,
step_cycle
);
});
})
.
def
(
"new_text"
,
[](
vs
::
LogWriter
&
self
,
const
std
::
string
&
tag
)
{
auto
tablet
=
self
.
AddTablet
(
tag
);
return
vs
::
components
::
Text
(
tablet
);
});
//------------------- components --------------------
#define ADD_SCALAR_READER(T) \
...
...
@@ -198,6 +207,18 @@ PYBIND11_MODULE(core, m) {
.
def
(
"record"
,
&
cp
::
ImageReader
::
record
)
.
def
(
"timestamp"
,
&
cp
::
ImageReader
::
timestamp
);
py
::
class_
<
cp
::
Text
>
(
m
,
"TextWriter"
)
.
def
(
"set_caption"
,
&
cp
::
Text
::
SetCaption
)
.
def
(
"add_record"
,
&
cp
::
Text
::
AddRecord
);
py
::
class_
<
cp
::
TextReader
>
(
m
,
"TextReader"
)
.
def
(
"records"
,
&
cp
::
TextReader
::
records
)
.
def
(
"ids"
,
&
cp
::
TextReader
::
ids
)
.
def
(
"timestamps"
,
&
cp
::
TextReader
::
timestamps
)
.
def
(
"caption"
,
&
cp
::
TextReader
::
caption
)
.
def
(
"total_records"
,
&
cp
::
TextReader
::
total_records
)
.
def
(
"size"
,
&
cp
::
TextReader
::
size
);
#define ADD_HISTOGRAM_WRITER(T) \
py::class_<cp::Histogram<T>>(m, "HistogramWriter__" #T, \
R"pbdoc(PyBind class. Must instantiate through the LogWriter.)pbdoc"
)
\
...
...
visualdl/logic/sdk.cc
浏览文件 @
3afc5b2d
...
...
@@ -321,6 +321,37 @@ DECL_BASIC_TYPES_CLASS_IMPL(class, ScalarReader)
DECL_BASIC_TYPES_CLASS_IMPL
(
struct
,
Histogram
)
DECL_BASIC_TYPES_CLASS_IMPL
(
struct
,
HistogramReader
)
std
::
vector
<
std
::
string
>
TextReader
::
records
()
const
{
std
::
vector
<
std
::
string
>
res
;
for
(
int
i
=
0
;
i
<
total_records
();
i
++
)
{
res
.
push_back
(
reader_
.
record
(
i
).
data
(
0
).
template
Get
<
std
::
string
>());
}
return
res
;
}
std
::
vector
<
int
>
TextReader
::
ids
()
const
{
std
::
vector
<
int
>
res
;
for
(
int
i
=
0
;
i
<
reader_
.
total_records
();
i
++
)
{
res
.
push_back
(
reader_
.
record
(
i
).
id
());
}
return
res
;
}
std
::
vector
<
time_t
>
TextReader
::
timestamps
()
const
{
std
::
vector
<
time_t
>
res
;
for
(
int
i
=
0
;
i
<
reader_
.
total_records
();
i
++
)
{
res
.
push_back
(
reader_
.
record
(
i
).
timestamp
());
}
return
res
;
}
std
::
string
TextReader
::
caption
()
const
{
CHECK
(
!
reader_
.
captions
().
empty
())
<<
"no caption"
;
return
reader_
.
captions
().
front
();
}
size_t
TextReader
::
size
()
const
{
return
reader_
.
total_records
();
}
}
// namespace components
}
// namespace visualdl
visualdl/logic/sdk.h
浏览文件 @
3afc5b2d
...
...
@@ -284,6 +284,40 @@ private:
TabletReader
reader_
;
};
struct
Text
{
Text
(
Tablet
tablet
)
:
tablet_
(
tablet
)
{}
void
SetCaption
(
const
std
::
string
cap
)
{
tablet_
.
SetCaptions
(
std
::
vector
<
std
::
string
>
({
cap
}));
}
void
AddRecord
(
int
id
,
std
::
string
value
)
{
auto
record
=
tablet_
.
AddRecord
();
record
.
SetId
(
id
);
auto
entry
=
record
.
AddData
();
time_t
time
=
std
::
time
(
nullptr
);
record
.
SetTimeStamp
(
time
);
entry
.
Set
(
value
);
}
private:
Tablet
tablet_
;
};
struct
TextReader
{
TextReader
(
TabletReader
reader
)
:
reader_
(
reader
)
{}
std
::
vector
<
std
::
string
>
records
()
const
;
std
::
vector
<
int
>
ids
()
const
;
std
::
vector
<
time_t
>
timestamps
()
const
;
std
::
string
caption
()
const
;
size_t
total_records
()
const
{
return
reader_
.
total_records
();
}
size_t
size
()
const
;
private:
TabletReader
reader_
;
};
}
// namespace components
}
// namespace visualdl
...
...
visualdl/python/storage.py
浏览文件 @
3afc5b2d
...
...
@@ -115,6 +115,10 @@ class LogReader(object):
check_tag_name_valid
(
tag
)
return
type2scalar
[
type
](
tag
)
def
text
(
self
,
tag
):
check_tag_name_valid
(
tag
)
return
self
.
reader
.
get_text
(
tag
)
def
__enter__
(
self
):
return
self
...
...
@@ -222,6 +226,10 @@ class LogWriter(object):
}
return
types
[
type
](
tag
,
num_buckets
)
def
text
(
self
,
tag
):
check_tag_name_valid
(
tag
)
return
self
.
writer
.
new_text
(
tag
)
def
save
(
self
):
self
.
writer
.
save
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录