Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
VisualDL
提交
7f500f45
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看板
提交
7f500f45
编写于
12月 27, 2017
作者:
S
superjom
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix image
just a trick to store int8 in protobuf should limit the maximum image shape latter
上级
5045c93a
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
75 addition
and
37 deletion
+75
-37
server/visualdl/lib.py
server/visualdl/lib.py
+6
-5
server/visualdl/run.sh
server/visualdl/run.sh
+1
-1
server/visualdl/storage_mock.py
server/visualdl/storage_mock.py
+6
-5
server/visualdl/visual_dl.py
server/visualdl/visual_dl.py
+3
-2
visualdl/logic/im.cc
visualdl/logic/im.cc
+1
-0
visualdl/logic/sdk.cc
visualdl/logic/sdk.cc
+13
-5
visualdl/logic/sdk.h
visualdl/logic/sdk.h
+1
-1
visualdl/storage/entry.cc
visualdl/storage/entry.cc
+24
-1
visualdl/storage/storage.proto
visualdl/storage/storage.proto
+20
-17
未找到文件。
server/visualdl/lib.py
浏览文件 @
7f500f45
...
@@ -65,22 +65,23 @@ def get_image_tags(storage, mode):
...
@@ -65,22 +65,23 @@ def get_image_tags(storage, mode):
def
get_image_tag_steps
(
storage
,
mode
,
tag
):
def
get_image_tag_steps
(
storage
,
mode
,
tag
):
# remove suffix '/x'
# remove suffix '/x'
res
=
re
.
search
(
r
".*/([0-9]+$)"
,
tag
)
res
=
re
.
search
(
r
".*/([0-9]+$)"
,
tag
)
s
tep
_index
=
0
s
ample
_index
=
0
origin_tag
=
tag
origin_tag
=
tag
if
res
:
if
res
:
tag
=
tag
[:
tag
.
rfind
(
'/'
)]
tag
=
tag
[:
tag
.
rfind
(
'/'
)]
s
tep
_index
=
int
(
res
.
groups
()[
0
])
s
ample
_index
=
int
(
res
.
groups
()[
0
])
reader
=
storage
.
as_mode
(
mode
)
reader
=
storage
.
as_mode
(
mode
)
image
=
reader
.
image
(
tag
)
image
=
reader
.
image
(
tag
)
res
=
[]
res
=
[]
for
i
in
range
(
image
.
num_samples
()):
record
=
image
.
record
(
step_index
,
i
)
for
step_index
in
range
(
image
.
num_records
()):
record
=
image
.
record
(
step_index
,
sample_index
)
shape
=
record
.
shape
()
shape
=
record
.
shape
()
query
=
urllib
.
urlencode
({
query
=
urllib
.
urlencode
({
'sample'
:
0
,
'sample'
:
0
,
'index'
:
i
,
'index'
:
step_index
,
'tag'
:
origin_tag
,
'tag'
:
origin_tag
,
'run'
:
mode
,
'run'
:
mode
,
})
})
...
...
server/visualdl/run.sh
浏览文件 @
7f500f45
...
@@ -5,4 +5,4 @@ export PYTHONPATH="$(pwd)/..:/home/superjom/project/VisualDL/build/visualdl/logi
...
@@ -5,4 +5,4 @@ export PYTHONPATH="$(pwd)/..:/home/superjom/project/VisualDL/build/visualdl/logi
export
FLASK_APP
=
visual_dl.py
export
FLASK_APP
=
visual_dl.py
export
FLASK_DEBUG
=
1
export
FLASK_DEBUG
=
1
python visual_dl.py
--logdir
./tmp/mock
--host
172.23.233.68
--port
804
1
python visual_dl.py
--logdir
./tmp/mock
--host
172.23.233.68
--port
804
3
server/visualdl/storage_mock.py
浏览文件 @
7f500f45
...
@@ -29,14 +29,15 @@ for i in range(100):
...
@@ -29,14 +29,15 @@ for i in range(100):
def
add_image
(
mode
):
def
add_image
(
mode
):
writer_
=
writer
.
as_mode
(
mode
)
writer_
=
writer
.
as_mode
(
mode
)
tag
=
"layer1/layer2/image0"
tag
=
"layer1/layer2/image0"
image_writer
=
writer_
.
image
(
tag
,
10
,
1
)
# TODO check step_cycle
num_passes
=
25
num_samples
=
10
num_samples
=
100
num_passes
=
10
shape
=
[
10
,
10
,
3
]
image_writer
=
writer_
.
image
(
tag
,
num_samples
,
1
)
shape
=
[
400
,
400
,
3
]
for
pass_
in
xrange
(
num_passes
):
for
pass_
in
xrange
(
num_passes
):
image_writer
.
start_sampling
()
image_writer
.
start_sampling
()
for
ins
in
xrange
(
num_samples
):
for
ins
in
xrange
(
2
*
num_samples
):
index
=
image_writer
.
is_sample_taken
()
index
=
image_writer
.
is_sample_taken
()
if
index
!=
-
1
:
if
index
!=
-
1
:
data
=
np
.
random
.
random
(
shape
)
*
256
data
=
np
.
random
.
random
(
shape
)
*
256
...
...
server/visualdl/visual_dl.py
浏览文件 @
7f500f45
...
@@ -135,6 +135,7 @@ def images():
...
@@ -135,6 +135,7 @@ def images():
tag
=
request
.
args
.
get
(
'displayName'
)
tag
=
request
.
args
.
get
(
'displayName'
)
result
=
lib
.
get_image_tag_steps
(
storage
,
mode
,
tag
)
result
=
lib
.
get_image_tag_steps
(
storage
,
mode
,
tag
)
result
=
gen_result
(
0
,
""
,
result
)
return
Response
(
json
.
dumps
(
result
),
mimetype
=
'application/json'
)
return
Response
(
json
.
dumps
(
result
),
mimetype
=
'application/json'
)
...
@@ -143,10 +144,10 @@ def images():
...
@@ -143,10 +144,10 @@ def images():
def
individual_image
():
def
individual_image
():
mode
=
request
.
args
.
get
(
'run'
)
mode
=
request
.
args
.
get
(
'run'
)
tag
=
request
.
args
.
get
(
'tag'
)
# include a index
tag
=
request
.
args
.
get
(
'tag'
)
# include a index
step_index
=
request
.
args
.
get
(
'index'
)
# index of step
step_index
=
int
(
request
.
args
.
get
(
'index'
)
)
# index of step
offset
=
0
offset
=
0
imagefile
=
lib
.
get_invididual_image
(
storage
,
mode
,
tag
,
step_
)
imagefile
=
lib
.
get_invididual_image
(
storage
,
mode
,
tag
,
step_
index
)
response
=
send_file
(
response
=
send_file
(
imagefile
,
as_attachment
=
True
,
attachment_filename
=
'img.png'
)
imagefile
,
as_attachment
=
True
,
attachment_filename
=
'img.png'
)
return
response
return
response
...
...
visualdl/logic/im.cc
浏览文件 @
7f500f45
...
@@ -37,6 +37,7 @@ template class SimpleWriteSyncGuard<Entry<double>>;
...
@@ -37,6 +37,7 @@ template class SimpleWriteSyncGuard<Entry<double>>;
template
class
SimpleWriteSyncGuard
<
Entry
<
bool
>
>
;
template
class
SimpleWriteSyncGuard
<
Entry
<
bool
>
>
;
template
class
SimpleWriteSyncGuard
<
Entry
<
long
>
>
;
template
class
SimpleWriteSyncGuard
<
Entry
<
long
>
>
;
template
class
SimpleWriteSyncGuard
<
Entry
<
std
::
string
>
>
;
template
class
SimpleWriteSyncGuard
<
Entry
<
std
::
string
>
>
;
template
class
SimpleWriteSyncGuard
<
Entry
<
std
::
vector
<
char
>
>>
;
template
class
SimpleWriteSyncGuard
<
Entry
<
int
>
>
;
template
class
SimpleWriteSyncGuard
<
Entry
<
int
>
>
;
}
// namespace visualdl
}
// namespace visualdl
visualdl/logic/sdk.cc
浏览文件 @
7f500f45
...
@@ -108,8 +108,13 @@ void Image::SetSample(int index,
...
@@ -108,8 +108,13 @@ void Image::SetSample(int index,
CHECK_LE
(
index
,
num_records_
);
CHECK_LE
(
index
,
num_records_
);
// set data
// set data
auto
entry
=
step_
.
MutableData
<
value_t
>
(
index
);
auto
entry
=
step_
.
MutableData
<
std
::
vector
<
char
>>
(
index
);
entry
.
SetMulti
(
data
);
// trick to store int8 to protobuf
std
::
vector
<
char
>
data_str
(
data
.
size
());
for
(
int
i
=
0
;
i
<
data
.
size
();
i
++
)
{
data_str
[
i
]
=
data
[
i
];
}
entry
.
Set
(
data_str
);
static_assert
(
static_assert
(
!
is_same_type
<
value_t
,
shape_t
>::
value
,
!
is_same_type
<
value_t
,
shape_t
>::
value
,
...
@@ -135,10 +140,13 @@ std::string ImageReader::caption() {
...
@@ -135,10 +140,13 @@ std::string ImageReader::caption() {
ImageReader
::
ImageRecord
ImageReader
::
record
(
int
offset
,
int
index
)
{
ImageReader
::
ImageRecord
ImageReader
::
record
(
int
offset
,
int
index
)
{
ImageRecord
res
;
ImageRecord
res
;
auto
record
=
reader_
.
record
(
offset
);
auto
record
=
reader_
.
record
(
offset
);
auto
data_entry
=
record
.
data
<
value_t
>
(
index
);
auto
data_entry
=
record
.
data
<
std
::
vector
<
char
>
>
(
index
);
auto
shape_entry
=
record
.
data
<
shape_t
>
(
index
);
auto
shape_entry
=
record
.
data
<
shape_t
>
(
index
);
auto
data_str
=
data_entry
.
Get
();
res
.
data
=
data_entry
.
GetMulti
();
std
::
transform
(
data_str
.
begin
(),
data_str
.
end
(),
std
::
back_inserter
(
res
.
data
),
[](
char
i
)
{
return
(
int
)((
unsigned
char
)
i
);
});
res
.
shape
=
shape_entry
.
GetMulti
();
res
.
shape
=
shape_entry
.
GetMulti
();
res
.
step_id
=
record
.
id
();
res
.
step_id
=
record
.
id
();
return
res
;
return
res
;
...
...
visualdl/logic/sdk.h
浏览文件 @
7f500f45
...
@@ -210,7 +210,7 @@ struct ImageReader {
...
@@ -210,7 +210,7 @@ struct ImageReader {
struct
ImageRecord
{
struct
ImageRecord
{
int
step_id
;
int
step_id
;
std
::
vector
<
value_
t
>
data
;
std
::
vector
<
in
t
>
data
;
std
::
vector
<
shape_t
>
shape
;
std
::
vector
<
shape_t
>
shape
;
};
};
...
...
visualdl/storage/entry.cc
浏览文件 @
7f500f45
...
@@ -21,7 +21,22 @@ namespace visualdl {
...
@@ -21,7 +21,22 @@ namespace visualdl {
WRITE_GUARD \
WRITE_GUARD \
}
}
template
<
>
void
Entry
<
std
::
vector
<
char
>>::
Set
(
std
::
vector
<
char
>
v
)
{
entry
->
set_dtype
(
storage
::
DataType
::
kBytes
);
entry
->
set_y
(
std
::
string
(
v
.
begin
(),
v
.
end
()));
WRITE_GUARD
}
template
<
>
void
Entry
<
std
::
vector
<
char
>>::
Add
(
std
::
vector
<
char
>
v
)
{
entry
->
set_dtype
(
storage
::
DataType
::
kBytess
);
*
entry
->
add_ys
()
=
std
::
string
(
v
.
begin
(),
v
.
end
());
WRITE_GUARD
}
IMPL_ENTRY_SET_OR_ADD
(
Set
,
int
,
kInt32
,
set_i32
);
IMPL_ENTRY_SET_OR_ADD
(
Set
,
int
,
kInt32
,
set_i32
);
IMPL_ENTRY_SET_OR_ADD
(
Set
,
std
::
string
,
kString
,
set_s
);
IMPL_ENTRY_SET_OR_ADD
(
Set
,
int64_t
,
kInt64
,
set_i64
);
IMPL_ENTRY_SET_OR_ADD
(
Set
,
int64_t
,
kInt64
,
set_i64
);
IMPL_ENTRY_SET_OR_ADD
(
Set
,
bool
,
kBool
,
set_b
);
IMPL_ENTRY_SET_OR_ADD
(
Set
,
bool
,
kBool
,
set_b
);
IMPL_ENTRY_SET_OR_ADD
(
Set
,
float
,
kFloat
,
set_f
);
IMPL_ENTRY_SET_OR_ADD
(
Set
,
float
,
kFloat
,
set_f
);
...
@@ -42,7 +57,7 @@ IMPL_ENTRY_SETMUL(bool, kBool, bs);
...
@@ -42,7 +57,7 @@ IMPL_ENTRY_SETMUL(bool, kBool, bs);
#define IMPL_ENTRY_GET(T, fieldname__) \
#define IMPL_ENTRY_GET(T, fieldname__) \
template <> \
template <> \
T EntryReader<T>::Get() const { \
T EntryReader<T>::Get() const { \
data_.fieldname__();
\
return data_.fieldname__();
\
}
}
IMPL_ENTRY_GET
(
int
,
i32
);
IMPL_ENTRY_GET
(
int
,
i32
);
...
@@ -52,6 +67,12 @@ IMPL_ENTRY_GET(double, d);
...
@@ -52,6 +67,12 @@ IMPL_ENTRY_GET(double, d);
IMPL_ENTRY_GET
(
std
::
string
,
s
);
IMPL_ENTRY_GET
(
std
::
string
,
s
);
IMPL_ENTRY_GET
(
bool
,
b
);
IMPL_ENTRY_GET
(
bool
,
b
);
template
<
>
std
::
vector
<
char
>
EntryReader
<
std
::
vector
<
char
>>::
Get
()
const
{
const
auto
&
y
=
data_
.
y
();
return
std
::
vector
<
char
>
(
y
.
begin
(),
y
.
end
());
}
#define IMPL_ENTRY_GET_MULTI(T, fieldname__) \
#define IMPL_ENTRY_GET_MULTI(T, fieldname__) \
template <> \
template <> \
std::vector<T> EntryReader<T>::GetMulti() const { \
std::vector<T> EntryReader<T>::GetMulti() const { \
...
@@ -70,10 +91,12 @@ template class Entry<int>;
...
@@ -70,10 +91,12 @@ template class Entry<int>;
template
class
Entry
<
float
>;
template
class
Entry
<
float
>;
template
class
Entry
<
double
>;
template
class
Entry
<
double
>;
template
class
Entry
<
bool
>;
template
class
Entry
<
bool
>;
template
class
Entry
<
std
::
vector
<
char
>
>
;
template
class
EntryReader
<
int
>;
template
class
EntryReader
<
int
>;
template
class
EntryReader
<
float
>;
template
class
EntryReader
<
float
>;
template
class
EntryReader
<
double
>;
template
class
EntryReader
<
double
>;
template
class
EntryReader
<
bool
>;
template
class
EntryReader
<
bool
>;
template
class
EntryReader
<
std
::
vector
<
char
>
>
;
}
// namespace visualdl
}
// namespace visualdl
visualdl/storage/storage.proto
浏览文件 @
7f500f45
...
@@ -9,15 +9,16 @@ enum DataType {
...
@@ -9,15 +9,16 @@ enum DataType {
kDouble
=
3
;
kDouble
=
3
;
kString
=
4
;
kString
=
4
;
kBool
=
5
;
kBool
=
5
;
kBytes
=
6
;
// entrys
// entrys
kInt64s
=
6
;
kInt64s
=
7
;
kFloats
=
7
;
kFloats
=
8
;
kDoubles
=
8
;
kDoubles
=
9
;
kStrings
=
9
;
kStrings
=
10
;
kInt32s
=
1
0
;
kInt32s
=
1
1
;
kBools
=
1
1
;
kBools
=
1
2
;
kBytess
=
13
;
kUnknown
=
1
2
;
kUnknown
=
1
4
;
}
}
// A data array, which type is `type`.
// A data array, which type is `type`.
...
@@ -29,16 +30,18 @@ message Entry {
...
@@ -29,16 +30,18 @@ message Entry {
int32
i32
=
2
;
int32
i32
=
2
;
int64
i64
=
3
;
int64
i64
=
3
;
string
s
=
4
;
string
s
=
4
;
float
f
=
5
;
bytes
y
=
5
;
double
d
=
6
;
float
f
=
6
;
bool
b
=
7
;
double
d
=
7
;
bool
b
=
8
;
// array
// array
repeated
int64
i64s
=
8
;
repeated
int64
i64s
=
9
;
repeated
float
fs
=
9
;
repeated
float
fs
=
10
;
repeated
double
ds
=
10
;
repeated
double
ds
=
11
;
repeated
int32
i32s
=
11
;
repeated
int32
i32s
=
12
;
repeated
string
ss
=
12
;
repeated
string
ss
=
13
;
repeated
bool
bs
=
13
;
repeated
bool
bs
=
14
;
repeated
bytes
ys
=
15
;
}
}
/*
/*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录