Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
VisualDL
提交
3f43ac4c
V
VisualDL
项目概览
PaddlePaddle
/
VisualDL
大约 2 年 前同步成功
通知
89
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看板
提交
3f43ac4c
编写于
1月 02, 2018
作者:
S
superjom
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix dir pointer bug
avoid copy LogWriter
上级
e85a6f6e
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
80 addition
and
15 deletion
+80
-15
visualdl/logic/pybind.cc
visualdl/logic/pybind.cc
+2
-0
visualdl/logic/sdk.h
visualdl/logic/sdk.h
+7
-2
visualdl/logic/sdk_test.cc
visualdl/logic/sdk_test.cc
+27
-0
visualdl/python/storage.py
visualdl/python/storage.py
+4
-4
visualdl/python/test_storage.py
visualdl/python/test_storage.py
+16
-0
visualdl/storage/storage.h
visualdl/storage/storage.h
+23
-8
visualdl/utils/image.h
visualdl/utils/image.h
+1
-1
未找到文件。
visualdl/logic/pybind.cc
浏览文件 @
3f43ac4c
...
@@ -22,6 +22,7 @@ PYBIND11_PLUGIN(core) {
...
@@ -22,6 +22,7 @@ PYBIND11_PLUGIN(core) {
new
(
&
instance
)
vs
::
LogReader
(
dir
);
new
(
&
instance
)
vs
::
LogReader
(
dir
);
})
})
.
def
(
"as_mode"
,
&
vs
::
LogReader
::
AsMode
)
.
def
(
"as_mode"
,
&
vs
::
LogReader
::
AsMode
)
.
def
(
"set_mode"
,
&
vs
::
LogReader
::
SetMode
)
.
def
(
"modes"
,
[](
vs
::
LogReader
&
self
)
{
return
self
.
storage
().
modes
();
})
.
def
(
"modes"
,
[](
vs
::
LogReader
&
self
)
{
return
self
.
storage
().
modes
();
})
.
def
(
"tags"
,
&
vs
::
LogReader
::
tags
)
.
def
(
"tags"
,
&
vs
::
LogReader
::
tags
)
// clang-format off
// clang-format off
...
@@ -46,6 +47,7 @@ PYBIND11_PLUGIN(core) {
...
@@ -46,6 +47,7 @@ PYBIND11_PLUGIN(core) {
[](
vs
::
LogWriter
&
instance
,
const
std
::
string
&
dir
,
int
sync_cycle
)
{
[](
vs
::
LogWriter
&
instance
,
const
std
::
string
&
dir
,
int
sync_cycle
)
{
new
(
&
instance
)
vs
::
LogWriter
(
dir
,
sync_cycle
);
new
(
&
instance
)
vs
::
LogWriter
(
dir
,
sync_cycle
);
})
})
.
def
(
"set_mode"
,
&
vs
::
LogWriter
::
SetMode
)
.
def
(
"as_mode"
,
&
vs
::
LogWriter
::
AsMode
)
.
def
(
"as_mode"
,
&
vs
::
LogWriter
::
AsMode
)
// clang-format off
// clang-format off
WRITER_ADD_SCALAR
(
float
)
WRITER_ADD_SCALAR
(
float
)
...
...
visualdl/logic/sdk.h
浏览文件 @
3f43ac4c
...
@@ -10,15 +10,18 @@ const static std::string kDefaultMode{"default"};
...
@@ -10,15 +10,18 @@ const static std::string kDefaultMode{"default"};
class
LogWriter
{
class
LogWriter
{
public:
public:
LogWriter
(
const
std
::
string
&
dir
,
int
sync_cycle
)
{
LogWriter
(
const
std
::
string
&
dir
,
int
sync_cycle
)
{
storage_
.
SetDir
(
dir
);
storage_
.
SetDir
(
dir
);
storage_
.
meta
.
cycle
=
sync_cycle
;
storage_
.
meta
.
cycle
=
sync_cycle
;
}
}
LogWriter
(
const
LogWriter
&
other
)
{
LogWriter
(
const
LogWriter
&
other
)
{
storage_
=
other
.
storage_
;
mode_
=
other
.
mode_
;
mode_
=
other
.
mode_
;
storage_
=
other
.
storage_
;
}
}
void
SetMode
(
const
std
::
string
&
mode
)
{
mode_
=
mode
;
}
LogWriter
AsMode
(
const
std
::
string
&
mode
)
{
LogWriter
AsMode
(
const
std
::
string
&
mode
)
{
LogWriter
writer
=
*
this
;
LogWriter
writer
=
*
this
;
storage_
.
AddMode
(
mode
);
storage_
.
AddMode
(
mode
);
...
@@ -47,6 +50,8 @@ class LogReader {
...
@@ -47,6 +50,8 @@ class LogReader {
public:
public:
LogReader
(
const
std
::
string
&
dir
)
:
reader_
(
dir
)
{}
LogReader
(
const
std
::
string
&
dir
)
:
reader_
(
dir
)
{}
void
SetMode
(
const
std
::
string
&
mode
)
{
mode_
=
mode
;
}
LogReader
AsMode
(
const
std
::
string
&
mode
)
{
LogReader
AsMode
(
const
std
::
string
&
mode
)
{
auto
tmp
=
*
this
;
auto
tmp
=
*
this
;
tmp
.
mode_
=
mode
;
tmp
.
mode_
=
mode
;
...
...
visualdl/logic/sdk_test.cc
浏览文件 @
3f43ac4c
...
@@ -79,4 +79,31 @@ TEST(Image, test) {
...
@@ -79,4 +79,31 @@ TEST(Image, test) {
CHECK_EQ
(
image2read
.
num_records
(),
num_steps
);
CHECK_EQ
(
image2read
.
num_records
(),
num_steps
);
}
}
TEST
(
Scalar
,
more_than_one_mode
)
{
const
auto
dir
=
"./tmp/sdk_multi_mode"
;
LogWriter
log
(
dir
,
20
);
std
::
vector
<
components
::
Scalar
<
float
>>
scalars
;
for
(
int
i
=
0
;
i
<
1
;
i
++
)
{
std
::
stringstream
ss
;
ss
<<
"mode-"
<<
i
;
auto
mode
=
ss
.
str
();
auto
writer
=
log
.
AsMode
(
mode
);
ASSERT_EQ
(
writer
.
storage
().
dir
(),
dir
);
LOG
(
INFO
)
<<
"origin dir: "
<<
dir
;
LOG
(
INFO
)
<<
"changed dir: "
<<
writer
.
storage
().
dir
();
auto
tablet
=
writer
.
AddTablet
(
"add/scalar0"
);
scalars
.
emplace_back
(
tablet
);
}
for
(
int
i
=
0
;
i
<
1
;
i
++
)
{
auto
&
scalar
=
scalars
[
i
];
for
(
int
j
=
0
;
j
<
100
;
j
++
)
{
scalar
.
AddRecord
(
j
,
(
float
)
j
);
}
}
}
}
// namespace visualdl
}
// namespace visualdl
visualdl/python/storage.py
浏览文件 @
3f43ac4c
...
@@ -57,8 +57,8 @@ class LogWriter(object):
...
@@ -57,8 +57,8 @@ class LogWriter(object):
self
.
writer
=
writer
if
writer
else
core
.
LogWriter
(
dir
,
sync_cycle
)
self
.
writer
=
writer
if
writer
else
core
.
LogWriter
(
dir
,
sync_cycle
)
def
mode
(
self
,
mode
):
def
mode
(
self
,
mode
):
LogWriter
.
cur_mode
=
self
.
as
_mode
(
mode
)
self
.
writer
.
set
_mode
(
mode
)
return
LogWriter
.
cur_mode
return
self
def
as_mode
(
self
,
mode
):
def
as_mode
(
self
,
mode
):
LogWriter
.
cur_mode
=
LogWriter
(
self
.
dir
,
self
.
sync_cycle
,
self
.
writer
.
as_mode
(
mode
))
LogWriter
.
cur_mode
=
LogWriter
(
self
.
dir
,
self
.
sync_cycle
,
self
.
writer
.
as_mode
(
mode
))
...
@@ -76,7 +76,7 @@ class LogWriter(object):
...
@@ -76,7 +76,7 @@ class LogWriter(object):
return
self
.
writer
.
new_image
(
tag
,
num_samples
,
step_cycle
)
return
self
.
writer
.
new_image
(
tag
,
num_samples
,
step_cycle
)
def
__enter__
(
self
):
def
__enter__
(
self
):
return
LogWriter
.
cur_mode
return
self
def
__exit__
(
self
,
type
,
value
,
traceback
):
def
__exit__
(
self
,
type
,
value
,
traceback
):
pass
self
.
writer
.
set_mode
(
"default"
)
visualdl/python/test_storage.py
浏览文件 @
3f43ac4c
...
@@ -115,6 +115,22 @@ class StorageTest(unittest.TestCase):
...
@@ -115,6 +115,22 @@ class StorageTest(unittest.TestCase):
scalar
=
reader
.
scalar
(
"model/scalar/average"
)
scalar
=
reader
.
scalar
(
"model/scalar/average"
)
self
.
assertEqual
(
scalar
.
caption
(),
"train"
)
self
.
assertEqual
(
scalar
.
caption
(),
"train"
)
def
test_modes
(
self
):
dir
=
"./tmp/storagetest0"
store
=
storage
.
LogWriter
(
self
.
dir
,
sync_cycle
=
1
)
scalars
=
[]
for
i
in
range
(
10
):
with
store
.
mode
(
"mode-%d"
%
i
)
as
writer
:
scalar
=
writer
.
scalar
(
"add/scalar0"
)
scalars
.
append
(
scalar
)
for
scalar
in
scalars
[:
-
1
]:
for
i
in
range
(
10
):
scalar
.
add_record
(
i
,
float
(
i
))
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
...
...
visualdl/storage/storage.h
浏览文件 @
3f43ac4c
...
@@ -13,7 +13,6 @@
...
@@ -13,7 +13,6 @@
#include "visualdl/utils/guard.h"
#include "visualdl/utils/guard.h"
namespace
visualdl
{
namespace
visualdl
{
static
const
std
::
string
meta_file_name
=
"storage.meta"
;
static
const
std
::
string
meta_file_name
=
"storage.meta"
;
static
std
::
string
meta_path
(
const
std
::
string
&
dir
)
{
static
std
::
string
meta_path
(
const
std
::
string
&
dir
)
{
...
@@ -43,6 +42,7 @@ struct Storage {
...
@@ -43,6 +42,7 @@ struct Storage {
mutable
SimpleSyncMeta
meta
;
mutable
SimpleSyncMeta
meta
;
Storage
()
{
Storage
()
{
dir_
=
std
::
make_shared
<
std
::
string
>
();
data_
=
std
::
make_shared
<
storage
::
Storage
>
();
data_
=
std
::
make_shared
<
storage
::
Storage
>
();
tablets_
=
std
::
make_shared
<
std
::
map
<
std
::
string
,
storage
::
Tablet
>>
();
tablets_
=
std
::
make_shared
<
std
::
map
<
std
::
string
,
storage
::
Tablet
>>
();
modes_
=
std
::
make_shared
<
std
::
set
<
std
::
string
>>
();
modes_
=
std
::
make_shared
<
std
::
set
<
std
::
string
>>
();
...
@@ -51,7 +51,9 @@ struct Storage {
...
@@ -51,7 +51,9 @@ struct Storage {
data_
->
set_timestamp
(
t
);
data_
->
set_timestamp
(
t
);
}
}
Storage
(
const
Storage
&
other
)
Storage
(
const
Storage
&
other
)
:
data_
(
other
.
data_
),
tablets_
(
other
.
tablets_
),
modes_
(
other
.
modes_
)
{}
:
data_
(
other
.
data_
),
tablets_
(
other
.
tablets_
),
modes_
(
other
.
modes_
)
{
dir_
=
other
.
dir_
;
}
// write operations
// write operations
void
AddMode
(
const
std
::
string
&
x
)
{
void
AddMode
(
const
std
::
string
&
x
)
{
...
@@ -72,13 +74,28 @@ struct Storage {
...
@@ -72,13 +74,28 @@ struct Storage {
return
Tablet
(
&
(
*
tablets_
)[
x
],
this
);
return
Tablet
(
&
(
*
tablets_
)[
x
],
this
);
}
}
void
SetDir
(
const
std
::
string
&
dir
)
{
dir_
=
dir
;
}
void
SetDir
(
const
std
::
string
&
dir
)
{
void
PersistToDisk
()
{
PersistToDisk
(
dir_
);
}
*
dir_
=
dir
;
}
std
::
string
dir
()
const
{
return
*
dir_
;
}
void
PersistToDisk
()
{
CHECK
(
!
dir_
->
empty
())
<<
"dir should be set."
;
try
{
fs
::
TryRecurMkdir
(
*
dir_
);
fs
::
SerializeToFile
(
*
data_
,
meta_path
(
*
dir_
));
for
(
auto
tag
:
data_
->
tags
())
{
auto
it
=
tablets_
->
find
(
tag
);
CHECK
(
it
!=
tablets_
->
end
())
<<
"tag "
<<
tag
<<
" not exist."
;
fs
::
SerializeToFile
(
it
->
second
,
tablet_path
(
*
dir_
,
tag
));
}
}
catch
(...)
{
}
}
/*
/*
* Save memory to disk.
* Save memory to disk.
*/
*/
void
PersistToDisk
(
const
std
::
string
&
dir
)
{
void
PersistToDisk
(
const
std
::
string
&
dir
)
{
// LOG(INFO) << "persist to disk " << dir;
CHECK
(
!
dir
.
empty
())
<<
"dir should be set."
;
CHECK
(
!
dir
.
empty
())
<<
"dir should be set."
;
fs
::
TryRecurMkdir
(
dir
);
fs
::
TryRecurMkdir
(
dir
);
...
@@ -95,13 +112,11 @@ struct Storage {
...
@@ -95,13 +112,11 @@ struct Storage {
protected:
protected:
void
AddTag
(
const
std
::
string
&
x
)
{
void
AddTag
(
const
std
::
string
&
x
)
{
*
data_
->
add_tags
()
=
x
;
*
data_
->
add_tags
()
=
x
;
LOG
(
INFO
)
<<
"add tag "
<<
x
;
LOG
(
INFO
)
<<
"tag.size "
<<
data_
->
tags_size
();
WRITE_GUARD
WRITE_GUARD
}
}
private:
private:
std
::
s
tring
dir_
;
std
::
s
hared_ptr
<
std
::
string
>
dir_
;
std
::
shared_ptr
<
std
::
map
<
std
::
string
,
storage
::
Tablet
>>
tablets_
;
std
::
shared_ptr
<
std
::
map
<
std
::
string
,
storage
::
Tablet
>>
tablets_
;
std
::
shared_ptr
<
storage
::
Storage
>
data_
;
std
::
shared_ptr
<
storage
::
Storage
>
data_
;
std
::
shared_ptr
<
std
::
set
<
std
::
string
>>
modes_
;
std
::
shared_ptr
<
std
::
set
<
std
::
string
>>
modes_
;
...
...
visualdl/utils/image.h
浏览文件 @
3f43ac4c
...
@@ -68,7 +68,7 @@ static void NormalizeImage(Uint8Image* image,
...
@@ -68,7 +68,7 @@ static void NormalizeImage(Uint8Image* image,
offset
=
0.0
f
;
offset
=
0.0
f
;
}
}
LOG
(
INFO
)
<<
"scale "
<<
scale
;
//
LOG(INFO) << "scale " << scale;
// Transform image, turning nonfinite values to bad_color
// Transform image, turning nonfinite values to bad_color
for
(
int
i
=
0
;
i
<
depth
;
i
++
)
{
for
(
int
i
=
0
;
i
<
depth
;
i
++
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录