Saya memiliki kode berikut. Saya mengonversi cp_X_train dari RGB ke skala abu-abu dan menggabungkannya dengan 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)
Saya mencetak waktu pemrosesan setiap 1000 sampel.
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
Seperti yang Anda lihat, pada awalnya, waktu pemrosesannya singkat. Namun seiring bertambahnya ukuran X_train_gray, waktu pemrosesan juga semakin besar. Bagaimana cara memperbaiki situasi ini?
np.concatenate
di akhir? Saat ini Anda sedang mengembangkan array secara berulang yang tidak berkinerja baik - person EdChum   schedule 31.07.2017X_train_gray[i] = ...
. Jika anda harus mengetahui jumlah gambarnya terlebih dahulu. - person blckbird   schedule 31.07.2017numpy.concatenate
harus mengalokasikan memori untuk array baru dan kemudian menyalin data dari dua array yang diberikan setiap saat. Jadi, Anda terus-menerus membangun kembali susunan yang terus bertambah, yang memerlukan banyak memori dan waktu. - person ForceBru   schedule 31.07.2017np.concatenate
setelah meneruskan daftar grey_imgs Anda - person EdChum   schedule 31.07.2017