Ich versuche meine eigenen Trainingsdaten für das TextSum Modell zu erstellen. Nach meinem Verständnis muss ich meine Artikel und Abstracts in eine Binärdatei (in TFRecords) einfügen. Ich kann jedoch aus Rohtextdateien keine eigenen Trainingsdaten erstellen. Ich verstehe nicht, Format sehr klar, so versuche ich, eine sehr einfache binäre Datei mit dem folgenden Code zu erstellen:Tensorflow - TextSum Modell: Wie erstelle ich meine eigenen Trainingsdaten?
files = os.listdir(path)
writer = tf.python_io.TFRecordWriter("test_data")
for i, file in enumerate(files):
content = open(os.path.join(path, file), "r").read()
example = tf.train.Example(
features = tf.train.Features(
feature = {
'content': tf.train.Feature(bytes_list=tf.train.BytesList(value=[content]))
}
)
)
serialized = example.SerializeToString()
writer.write(serialized)
Und ich versuche, den folgenden Code zu verwenden, um den Wert dieser test_data Datei auszulesen
reader = open("test_data", 'rb')
len_bytes = reader.read(8)
str_len = struct.unpack('q', len_bytes)[0]
example_str = struct.unpack('%ds' % str_len, reader.read(str_len))[0]
example_pb2.Example.FromString(example_str)
Aber ich bekomme immer folgende Fehlermeldung:
File "dailymail_corpus_to_tfrecords.py", line 34, in check_file
example_pb2.Example.FromString(example_str)
File "/home/s1510032/anaconda2/lib/python2.7/site-packages/google/protobuf/internal/python_message.py", line 770, in FromString
message.MergeFromString(s)
File "/home/s1510032/anaconda2/lib/python2.7/site-packages/google/protobuf/internal/python_message.py", line 1091, in MergeFromString
if self._InternalParse(serialized, 0, length) != length:
File "/home/s1510032/anaconda2/lib/python2.7/site-packages/google/protobuf/internal/python_message.py", line 1117, in InternalParse
new_pos = local_SkipField(buffer, new_pos, end, tag_bytes)
File "/home/s1510032/anaconda2/lib/python2.7/site-packages/google/protobuf/internal/decoder.py", line 850, in SkipField
return WIRETYPE_TO_SKIPPER[wire_type](buffer, pos, end)
File "/home/s1510032/anaconda2/lib/python2.7/site-packages/google/protobuf/internal/decoder.py", line 791, in _SkipLengthDelimited
raise _DecodeError('Truncated message.')
google.protobuf.message.DecodeError: Truncated message.
ich habe keine Ahnung, was falsch ist. Bitte lassen Sie mich wissen, wenn Sie Vorschläge zur Lösung dieses Problems haben.
welches Betriebssystem hast du das läuft auf? Unter OSX 11 bekomme ich Probleme bevor ich überhaupt herkomme. Ich musste die Train-Methode ändern, so dass der Supervisor auf das Stoppen der Threads warten würde. – Jordan
Ich benutze laufenden OSX. Ich habe auch versucht, es auf Unix laufen zu lassen und es lief gut. Aber es gibt einen kleinen Fehler in meiner Lösung, wir sollten 'reader.read (4)' verwenden, um 4 Bytes in 'dat.py' zu überspringen, anstatt' seek (12) 'zu verwenden. Ich werde meinen Beitrag aktualisieren –