Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MindSpore
mindinsight
提交
b3a5f2b6
M
mindinsight
项目概览
MindSpore
/
mindinsight
通知
8
Star
4
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mindinsight
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b3a5f2b6
编写于
5月 25, 2020
作者:
L
liangyongxiong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
optimize redundant funtion codes
上级
5657491a
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
39 addition
and
56 deletion
+39
-56
mindinsight/datavisual/data_transform/ms_data_loader.py
mindinsight/datavisual/data_transform/ms_data_loader.py
+26
-33
mindinsight/datavisual/data_transform/summary_watcher.py
mindinsight/datavisual/data_transform/summary_watcher.py
+13
-23
未找到文件。
mindinsight/datavisual/data_transform/ms_data_loader.py
浏览文件 @
b3a5f2b6
...
...
@@ -386,48 +386,40 @@ class _SummaryParser(_Parser):
Args:
event (Event): Message event in summary proto, data read from file handler.
"""
plugins
=
{
'scalar_value'
:
PluginNameEnum
.
SCALAR
,
'image'
:
PluginNameEnum
.
IMAGE
,
'histogram'
:
PluginNameEnum
.
HISTOGRAM
,
}
if
event
.
HasField
(
'summary'
):
for
value
in
event
.
summary
.
value
:
if
value
.
HasField
(
'scalar_value'
):
tag
=
'{}/{}'
.
format
(
value
.
tag
,
PluginNameEnum
.
SCALAR
.
value
)
tensor_event
=
TensorEvent
(
wall_time
=
event
.
wall_time
,
step
=
event
.
step
,
tag
=
tag
,
plugin_name
=
PluginNameEnum
.
SCALAR
.
value
,
value
=
value
.
scalar_value
,
filename
=
self
.
_latest_filename
)
self
.
_events_data
.
add_tensor_event
(
tensor_event
)
if
value
.
HasField
(
'image'
):
tag
=
'{}/{}'
.
format
(
value
.
tag
,
PluginNameEnum
.
IMAGE
.
value
)
tensor_event
=
TensorEvent
(
wall_time
=
event
.
wall_time
,
step
=
event
.
step
,
tag
=
tag
,
plugin_name
=
PluginNameEnum
.
IMAGE
.
value
,
value
=
value
.
image
,
filename
=
self
.
_latest_filename
)
self
.
_events_data
.
add_tensor_event
(
tensor_event
)
for
plugin
in
plugins
:
if
not
value
.
HasField
(
plugin
):
continue
plugin_name_enum
=
plugins
[
plugin
]
tensor_event_value
=
getattr
(
value
,
plugin
)
if
value
.
HasField
(
'histogram'
)
:
histogram_msg
=
HistogramContainer
(
value
.
histogram
)
if
plugin
==
'histogram'
:
tensor_event_value
=
HistogramContainer
(
tensor_event_value
)
# Drop steps if original_buckets_count exceeds HistogramContainer.MAX_ORIGINAL_BUCKETS_COUNT
# to avoid time-consuming re-sample process.
if
histogram_msg
.
original_buckets_count
>
HistogramContainer
.
MAX_ORIGINAL_BUCKETS_COUNT
:
logger
.
warning
(
'original_buckets_count exceeds HistogramContainer.MAX_ORIGINAL_BUCKETS_COUNT'
)
else
:
tag
=
'{}/{}'
.
format
(
value
.
tag
,
PluginNameEnum
.
HISTOGRAM
.
value
)
if
tensor_event_value
.
original_buckets_count
>
HistogramContainer
.
MAX_ORIGINAL_BUCKETS_COUNT
:
logger
.
warning
(
'original_buckets_count exceeds '
'HistogramContainer.MAX_ORIGINAL_BUCKETS_COUNT'
)
continue
tensor_event
=
TensorEvent
(
wall_time
=
event
.
wall_time
,
step
=
event
.
step
,
tag
=
tag
,
plugin_name
=
PluginNameEnum
.
HISTOGRAM
.
value
,
value
=
histogram_msg
,
tag
=
'{}/{}'
.
format
(
value
.
tag
,
plugin_name_enum
.
value
)
,
plugin_name
=
plugin_name_enum
.
value
,
value
=
tensor_event_value
,
filename
=
self
.
_latest_filename
)
self
.
_events_data
.
add_tensor_event
(
tensor_event
)
if
event
.
HasField
(
'graph_def'
):
graph_proto
=
event
.
graph_def
elif
event
.
HasField
(
'graph_def'
):
graph
=
MSGraph
()
graph
.
build_graph
(
graph_proto
)
graph
.
build_graph
(
event
.
graph_def
)
tensor_event
=
TensorEvent
(
wall_time
=
event
.
wall_time
,
step
=
event
.
step
,
tag
=
self
.
_latest_filename
,
...
...
@@ -439,6 +431,7 @@ class _SummaryParser(_Parser):
graph_tags
=
self
.
_events_data
.
list_tags_by_plugin
(
PluginNameEnum
.
GRAPH
.
value
)
except
KeyError
:
graph_tags
=
[]
summary_tags
=
self
.
filter_files
(
graph_tags
)
for
tag
in
summary_tags
:
self
.
_events_data
.
delete_tensor_event
(
tag
)
...
...
mindinsight/datavisual/data_transform/summary_watcher.py
浏览文件 @
b3a5f2b6
...
...
@@ -64,20 +64,12 @@ class SummaryWatcher:
if
self
.
_contains_null_byte
(
summary_base_dir
=
summary_base_dir
):
return
[]
if
not
os
.
path
.
exists
(
summary_base_dir
):
logger
.
warning
(
'Path of summary base directory not exists.'
)
return
[]
if
not
os
.
path
.
isdir
(
summary_base_dir
):
logger
.
warning
(
'Path of summary base directory is not a valid directory.'
)
relative_path
=
os
.
path
.
join
(
'.'
,
''
)
if
not
self
.
_is_valid_summary_directory
(
summary_base_dir
,
relative_path
):
return
[]
summary_dict
=
{}
if
not
overall
:
counter
=
Counter
(
max_count
=
self
.
MAX_SCAN_COUNT
)
else
:
counter
=
Counter
()
counter
=
Counter
(
max_count
=
None
if
overall
else
self
.
MAX_SCAN_COUNT
)
try
:
entries
=
os
.
scandir
(
summary_base_dir
)
...
...
@@ -94,19 +86,13 @@ class SummaryWatcher:
logger
.
info
(
'Stop further scanning due to overall is False and '
'number of scanned files exceeds upper limit.'
)
break
relative_path
=
os
.
path
.
join
(
'.'
,
''
)
if
entry
.
is_symlink
():
pass
elif
entry
.
is_file
():
self
.
_update_summary_dict
(
summary_dict
,
summary_base_dir
,
relative_path
,
entry
)
elif
entry
.
is_dir
():
full_path
=
os
.
path
.
realpath
(
os
.
path
.
join
(
summary_base_dir
,
entry
.
name
))
try
:
subdir_entries
=
os
.
scandir
(
full_path
)
except
PermissionError
:
logger
.
warning
(
'Path of %s under summary base directory is not accessible.'
,
entry
.
name
)
continue
self
.
_scan_subdir_entries
(
summary_dict
,
summary_base_dir
,
subdir_entries
,
entry
.
name
,
counter
)
entry_path
=
os
.
path
.
realpath
(
os
.
path
.
join
(
summary_base_dir
,
entry
.
name
))
self
.
_scan_subdir_entries
(
summary_dict
,
summary_base_dir
,
entry_path
,
entry
.
name
,
counter
)
directories
=
[]
for
key
,
value
in
summary_dict
.
items
():
...
...
@@ -130,18 +116,24 @@ class SummaryWatcher:
return
directories
def
_scan_subdir_entries
(
self
,
summary_dict
,
summary_base_dir
,
subdir_entries
,
entry_name
,
counter
):
def
_scan_subdir_entries
(
self
,
summary_dict
,
summary_base_dir
,
entry_path
,
entry_name
,
counter
):
"""
Scan subdir entries.
Args:
summary_dict (dict): Temporary data structure to hold summary directory info.
summary_base_dir (str): Path of summary base directory.
entry_path(str): Path entry.
entry_name (str): Name of entry.
subdir_entries(DirEntry): Directory entry instance.
counter (Counter): An instance of CountLimiter.
"""
try
:
subdir_entries
=
os
.
scandir
(
entry_path
)
except
PermissionError
:
logger
.
warning
(
'Path of %s under summary base directory is not accessible.'
,
entry_name
)
return
for
subdir_entry
in
subdir_entries
:
if
len
(
summary_dict
)
==
self
.
MAX_SUMMARY_DIR_COUNT
:
break
...
...
@@ -189,8 +181,6 @@ class SummaryWatcher:
"""
summary_base_dir
=
os
.
path
.
realpath
(
summary_base_dir
)
summary_directory
=
os
.
path
.
realpath
(
os
.
path
.
join
(
summary_base_dir
,
relative_path
))
if
summary_base_dir
==
summary_directory
:
return
True
if
not
os
.
path
.
exists
(
summary_directory
):
logger
.
warning
(
'Path of summary directory not exists.'
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录