câu hỏi này liên quan đến vấn đề chung về đào tạo trên nhiều tệp lớn trong Keras có kích thước quá lớn để vừa với bộ nhớ GPU. Tôi đang sử dụng Keras 1.0.5 và tôi muốn một giải pháp không yêu cầu 1.0.6. Một cách để làm điều này được mô tả bởi fchollet here và here:Máy ảnh: đào tạo hàng loạt cho nhiều bộ dữ liệu lớn
# Create generator that yields (current features X, current labels y)
def BatchGenerator(files):
for file in files:
current_data = pickle.load(open("file", "rb"))
X_train = current_data[:,:-1]
y_train = current_data[:,-1]
yield (X_train, y_train)
# train model on each dataset
for epoch in range(n_epochs):
for (X_train, y_train) in BatchGenerator(files):
model.fit(X_train, y_train, batch_size = 32, nb_epoch = 1)
Tuy nhiên tôi lo ngại rằng tình trạng của mô hình không được lưu, đúng hơn là mô hình được reinitialized không chỉ giữa thời đại mà còn giữa các tập dữ liệu . Mỗi "Epoch 1/1" đại diện đào tạo trên một tập dữ liệu khác nhau dưới đây:
~~~~~ Epoch 0 ~~~~~~
Epoch 1/1 295806/295806 [===== =========================] - 13s - mất: 15.7517
Epoch 1/1 407890/407890 [======= =======================] - 19 giây - mất: 15.8036
Epoch 1/1 383188/383188 [========= =====================] - 19s - mất: 15.8130
~~~~~ Epoch 1 ~~~~~~
Epoch 1/1 295806/295806 [==============================] - 14 giây - mất: 15.7517
Epoch 1/1 407890/407890 [==============================] - 20 giây - mất: 15.8036
Epoch 1/1 383188/383188 [==============================] - 15 giây - mất: 15.8130
Tôi biết rằng người ta có thể sử dụng mô hình .fit_generator nhưng như các phương pháp trên đã được nhiều lần đề nghị như là một cách đào tạo hàng loạt tôi muốn biết những gì tôi đang làm sai.
Nhờ sự giúp đỡ của bạn,
Max
Các bạn đã cố gắng để chạy thử nghiệm trên CPU theo lô nhỏ bằng cách phá vỡ các file lớn thành những phần nhỏ hơn? –
khá chắc chắn bạn cần phải sử dụng fit_generator, xem https://keras.io/models/sequential/ – shell
vết sưng, bất kỳ một? sử dụng fit_generator dường như không phải là cách ngắn nhất. – kulssaka