![](/img/trans.png)
[英]ValueError: all the input arrays must have same number of dimensions
[英]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),對於其他元素,依此類推。
如何使所有陣列具有相同的形狀?
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.