ฉันมีรหัสต่อไปนี้ ฉันแปลง cp_X_train จาก RGB เป็นระดับสีเทาและต่อเข้ากับ X_train_gray
X_train_gray = np.empty([0, 32, 32, 1])
start = timer()
for i in range(cp_X_train.shape[0]):
if i % 1000 == 0:
print(i)
end = timer()
print(end - start)
start = timer()
gray_img = cv2.cvtColor(cp_X_train[i], cv2.COLOR_BGR2GRAY)[None, :, :, None]
X_train_gray = np.concatenate((X_train_gray, gray_img), axis=0)
ฉันพิมพ์เวลาดำเนินการทุกๆ 1,000 ตัวอย่าง
0
0.00042258699977537617
1000
3.331055953000032
2000
9.222047281000414
3000
15.596254615000362
4000
21.37355997799932
5000
27.513121935999152
6000
33.477182841001195
7000
40.4089376539996
8000
47.39131554400046
9000
53.73745651799982
อย่างที่คุณเห็นในช่วงเริ่มต้น เวลาในการประมวลผลมีน้อย แต่เมื่อ X_train_gray มีขนาดใหญ่ขึ้น เวลาในการประมวลผลก็ใหญ่ขึ้น ฉันจะแก้ไขสถานการณ์นี้ได้อย่างไร
np.concatenate
ในตอนท้ายได้หรือไม่? ขณะนี้คุณกำลังขยายอาเรย์ซ้ำ ๆ ซึ่งไม่มีประสิทธิภาพ - person EdChum   schedule 31.07.2017X_train_gray[i] = ...
หากต้องทราบจำนวนภาพก่อน - person blckbird   schedule 31.07.2017numpy.concatenate
ต้องจัดสรรหน่วยความจำสำหรับอาร์เรย์ใหม่ จากนั้นจึงคัดลอกข้อมูลจากอาร์เรย์ที่กำหนดทั้งสองครั้งทุกครั้ง ดังนั้น คุณจะต้องสร้างอาร์เรย์ที่เพิ่มขึ้นใหม่อย่างต่อเนื่อง ซึ่งต้องใช้หน่วยความจำและเวลาจำนวนมาก - person ForceBru   schedule 31.07.2017np.concatenate
เมื่อผ่านรายการ grey_imgs ของคุณ - person EdChum   schedule 31.07.2017