Ich speichere ein numpy Array mit den folgenden export_vectors
definiert unten. In dieser Funktion lade ich String-Werte, die durch Leerzeichen getrennt sind, und speichere sie dann als Floats in einem numply-Array.Wie lade ich eine Datei, die mit numpy.savez_compressed erstellt wurde?
def export_vectors(vocab, input_filename, output_filename, dim):
embeddings = np.zeros([len(vocab), dim])
with open(input_filename) as f:
for line in f:
line = line.strip().split(' ')
word = line[0]
embedding = line[1:]
if word in vocab:
word_idx = vocab[word]
embeddings[word_idx] = np.asarray(embedding).astype(float)
np.savez_compressed(output_filename, embeddings=embeddings)
Hier embeddings
ist ein ndarray
von float64
Typ.
Obwohl, dann beim Versuch, die Datei zu laden, mit:
def get_vectors(filename):
with open(filename) as f:
return np.load(f)["embeddings"]
Beim Versuch, den Laden zu tun, erhalte ich die Fehlermeldung:
File "/usr/lib/python3.5/codecs.py", line 321, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0x99 in position 10: invalid start byte
Warum ist das?
Da die Datei z-komprimiert ist, verwenden Sie 'np.load (Dateiname)'. Mit anderen Worten, 'load' sorgt dafür, dass das komprimierte Archiv auf die richtige Weise geöffnet wird. – hpaulj