簡體   English   中英

ValueError:所有輸入數組必須具有相同的形狀

[英]ValueError: all input arrays must have the same shape

我正在嘗試執行代碼,但出現此Value錯誤。 Source.pkl文件包含100個元素,如隨附的array.png中所示。

如圖中索引0所示,共有16個numpy數組,它們的形狀均為(1,59),因此第一個元素的形狀為(16,1,59)。 在索引1處,有11個numpy數組,它們的形狀均為(1,59),因此,第二個元素的形狀為(11,1,59),對於其他元素,依此類推。

如何使所有陣列具有相同的形狀?

包含100個具有不同數組大小的元素

import numpy as np
from keras.layers import Input, LSTM, Dense
from keras.models import Model

pickle_in = open("source.pkl","rb")
predictions = np.load(pickle_in)[0:100]
in_predictions = np.stack(predictions)
pickle_in.close()

這有兩個選擇:

將零數組追加到每個列表,直到所有列表的大小都相同。 在您的情況下,假設16個是所有列表中最大的大小,則必須向每個列表追加(1,59)形狀的數組,直到其大小為16。

但是,這是浪費空間。 另一個選擇是:

將您的列表連接成一個大列表 ,然后將大列表轉換為numpy數組。 使用另一個列表來記錄最初在哪個列表中的數組。 這是一個示例代碼,但我尚未對其進行測試:

pickle_in = open("source.pkl","rb")
predictions = np.load(pickle_in)[0:100]
wrap_list = []
index_map = []
for i in range(len(predictions)):
    pred = predictions[i]
    wrap_list += pred
    index_map += [i for _ in range(len(pred))]
in_predictions = np.array(wrap_list)
pickle_in.close()

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM