Я пытаюсь обучить модель Keras (LipNet) и при начале обучения открывает файл с wb
и пытается записать заголовок, содержащийся в списке.Тем не менее, я получаю эту ошибку:
File "c:\users\fahim\documents\lipnet\lipnet\lipreading\callbacks.py", line 77, in on_train_begin
csvw.writerow(['Epoch', 'Samples', 'Mean CER', 'Mean CER (Norm)', 'Mean WER', 'Mean WER (Norm)', 'Mean BLEU', 'Mean BLEU (Norm)'])
TypeError: a bytes-like object is required, not 'str'
Я посмотрел эту проблему и попробовал много предложенных вещей, таких как b
перед строками,
csvw.writerow([b'Epoch', b'Samples', b'Mean CER', b'Mean CER (Norm)', b'Mean WER', b'Mean WER (Norm)', b'Mean BLEU', b'Mean BLEU (Norm)'])
и экспериментировалс превращением списков в байт-код.
>>>bytes([1,2,3])
b'\x01\x02\x03'
>>>bytes(["a", "b"])
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
bytes(["a", "b"])
TypeError: 'str' object cannot be interpreted as an integer
Вот полный код , который открывает файл:
(фрагмент)
def on_train_begin(self, logs={}):
with open(os.path.join(self.output_dir, 'stats.csv'), 'wb') as csvfile: #wb -> w
csvw = csv.writer(csvfile)
csvw.writerow([b'Epoch', b'Samples', b'Mean CER', b'Mean CER (Norm)', b'Mean WER', b'Mean WER (Norm)', b'Mean BLEU', b'Mean BLEU (Norm)'])
Кстати, код тожеиспользует рассол, если это помогает.Как csvw
записать строку в байт-коде?