Tôi mới đến Keras và cần sự giúp đỡ của bạn.
Tôi đang đào tạo một mạng lưới thần kinh ở Keras và chức năng mất của tôi là Squared Difference b / w giá trị mục tiêu và sản lượng của net.
Tôi muốn tối ưu hóa điều này bằng cách sử dụng Gradient Descent. Sau khi xem qua một số liên kết trên mạng, tôi đã biết rằng có 3 loại độ dốc được sử dụng chung:
- Độ dốc mẫu đơn : Ở đây, độ dốc được tính từ chỉ một mẫu mỗi lần lặp -> Độ dốc có thể bị nhiễu.
- Độ dốc theo lô : Ở đây, độ dốc trung bình của độ dốc được tính từ TẤT CẢ các mẫu trong tập dữ liệu -> Gradient là tổng quát hơn, nhưng không thể tìm thấy đối với các bộ dữ liệu khổng lồ.
- Độ dốc giảm dần hàng loạt nhỏ : Tương tự như Batch GD. Thay vì sử dụng toàn bộ tập dữ liệu, chỉ một số mẫu (được xác định bởi batch_size) được sử dụng để tính toán độ dốc trong mỗi lần lặp -> Không quá ồn ào và có thể tính toán được - - Tốt nhất trong cả hai thế giới.
Câu hỏi:
- Tôi muốn thực hiện Mini-Gradient Gradient Descent trong Keras. Tôi có thể làm cái này như thế nào? Có nên sử dụng trình tối ưu hóa SGD?
Nếu SGD được sử dụng, làm cách nào để đặt batch_size? Dường như không có tham số nào cho hàm SGD để đặt batch_size.
optimizer = keras.optimizers.SGD(lr=0.01, decay=0.1, momentum=0.1, nesterov=False)
Có một tham số batch_size trong model.fit () trong Keras.
history = model.fit(x, y, nb_epoch=num_epochs, batch_size=20, verbose=0, validation_split=0.1)
Đây có giống với kích thước lô trong Mini-Gradient Gradient Descent không? Nếu không, chính xác có nghĩa là đào tạo trên một loạt các đầu vào là gì? Có nghĩa là 'batch_size' không. của các chủ đề chạy song song và cập nhật các trọng số mô hình song song?
Nếu nó giúp, đây là đoạn mã trăn tôi đã viết cho đến bây giờ .