Skip to content

Commit a79d8bd

Browse files
authored
Merge pull request #132 from JamieMair/fix-serialisation-bug
Fix serialisation bug
2 parents 46ccf1d + 2b2807e commit a79d8bd

File tree

5 files changed

+10
-17
lines changed

5 files changed

+10
-17
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "TensorBoardLogger"
22
uuid = "899adc3e-224a-11e9-021f-63837185c80f"
33
authors = ["Filippo Vicentini <[email protected]>"]
4-
version = "0.1.21"
4+
version = "0.1.22"
55

66
[deps]
77
CRC32c = "8bf52ea8-c179-5cab-976a-9e18b702a9bc"

src/event.jl

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,16 @@ format. The format follows the following rule (in bytes)
2929
#4 N..N+8 UInt32 masked_CRC of #3
3030
"""
3131
function write_event(out::IO, event::Event)
32-
data = PipeBuffer();
33-
encode(ProtoEncoder(data), event)
32+
event_bytes = serialize_proto(event)
3433

3534
#header
36-
header = collect(reinterpret(UInt8, [data.size]))
35+
header = collect(reinterpret(UInt8, [length(event_bytes)]))
3736
crc_header = reinterpret(UInt8, UInt32[masked_crc32c(header)])
38-
crc_data = reinterpret(UInt8, UInt32[masked_crc32c(data.data)])
37+
crc_data = reinterpret(UInt8, UInt32[masked_crc32c(event_bytes)])
3938

4039
write(out, header)
4140
write(out, crc_header)
42-
write(out, data.data)
41+
write(out, event_bytes)
4342
write(out, crc_data)
4443
flush(out)
4544
end

src/hparams.jl

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,6 @@ function metric_info(c::MetricConfig)
7373
return HP.MetricInfo(mname, c.displayname, c.description, HDatasetType.DATASET_UNKNOWN)
7474
end
7575

76-
function encode_bytes(content::HP.HParamsPluginData)
77-
data = PipeBuffer()
78-
encode(ProtoEncoder(data), content)
79-
return take!(data)
80-
end
81-
8276
# Dictionary serialisation in ProtoBuf does not work for this specific map type
8377
# and must be overloaded so that it can be parsed. The format was derived by
8478
# looking at the binary output of a log file created by tensorboardX.
@@ -156,17 +150,17 @@ function write_hparams!(logger::TBLogger, hparams::Dict{String,<:Any}, metrics::
156150

157151
experiment = HP.Experiment("", "", "", time(), hparam_infos, metric_infos)
158152
experiment_content = HP.HParamsPluginData(PLUGIN_DATA_VERSION, OneOf(:experiment, experiment))
159-
experiment_md = SummaryMetadata(SummaryMetadata_PluginData(PLUGIN_NAME, encode_bytes(experiment_content)), "", "", DataClass.DATA_CLASS_UNKNOWN)
153+
experiment_md = SummaryMetadata(SummaryMetadata_PluginData(PLUGIN_NAME, serialize_proto(experiment_content)), "", "", DataClass.DATA_CLASS_UNKNOWN)
160154
experiment_summary = Summary([Summary_Value("", EXPERIMENT_TAG, experiment_md, nothing)])
161155

162156
session_start_info = HP.SessionStartInfo(hparams_dict, "", "", "", time())
163157
session_start_content = HP.HParamsPluginData(PLUGIN_DATA_VERSION, OneOf(:session_start_info, session_start_info))
164-
session_start_md = SummaryMetadata(SummaryMetadata_PluginData(PLUGIN_NAME, encode_bytes(session_start_content)), "", "", DataClass.DATA_CLASS_UNKNOWN)
158+
session_start_md = SummaryMetadata(SummaryMetadata_PluginData(PLUGIN_NAME, serialize_proto(session_start_content)), "", "", DataClass.DATA_CLASS_UNKNOWN)
165159
session_start_summary = Summary([Summary_Value("", SESSION_START_INFO_TAG, session_start_md, nothing)])
166160

167161
session_end_info = HP.SessionEndInfo(HP.Status.STATUS_SUCCESS, time())
168162
session_end_content = HP.HParamsPluginData(PLUGIN_DATA_VERSION, OneOf(:session_end_info, session_end_info))
169-
session_end_md = SummaryMetadata(SummaryMetadata_PluginData(PLUGIN_NAME, encode_bytes(session_end_content)), "", "", DataClass.DATA_CLASS_UNKNOWN)
163+
session_end_md = SummaryMetadata(SummaryMetadata_PluginData(PLUGIN_NAME, serialize_proto(session_end_content)), "", "", DataClass.DATA_CLASS_UNKNOWN)
170164
session_end_summary = Summary([Summary_Value("", SESSION_END_INFO_TAG, session_end_md, nothing)])
171165

172166
for s in (experiment_summary, session_start_summary, session_end_summary)

src/utils.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ end
99
function serialize_proto(data)
1010
pb = PipeBuffer()
1111
encode(ProtoEncoder(pb), data)
12-
pb.data
12+
return take!(pb) # Do not return additional zeros
1313
end
1414

1515
"""

test/test_hparams.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ const hparams_metadata_encoded_bytes = UInt8[0x1a, 0x5b, 0x0a, 0x0e, 0x0a, 0x06,
6565
session_start_info = TensorBoardLogger.HP.SessionStartInfo(hparams_dict, "", "", "", zero(Float64))
6666
session_start_content = TensorBoardLogger.HP.HParamsPluginData(PLUGIN_DATA_VERSION, TensorBoardLogger.OneOf(:session_start_info, session_start_info))
6767

68-
@test TensorBoardLogger.encode_bytes(session_start_content) == hparams_metadata_encoded_bytes
68+
@test TensorBoardLogger.serialize_proto(session_start_content) == hparams_metadata_encoded_bytes
6969
end
7070

7171

0 commit comments

Comments
 (0)