2017-02-19 24 views
5

Tôi thực sự mới với Keras vì vậy tha thứ cho tôi nếu truy vấn của tôi là một chút ngớ ngẩn. Tôi đã cài đặt Keras trong hệ thống của mình bằng các phương thức mặc định và nó hoạt động tốt. Tôi muốn thêm một trình tối ưu hóa mới cho Keras để tôi có thể dễ dàng đề cập đến "optimizer = mynewone" theo chức năng model.compile. Làm cách nào để tôi thay đổi mã "optimizer.py" trong Keras và đảm bảo rằng thay đổi được phản ánh trên môi trường Keras của tôi. Đây là những gì tôi đã cố gắng:Làm thế nào để thay đổi mã tối ưu hóa Keras

Giả sử tôi thay đổi tên ưu từ rmsprop để rmsprops trong mã tôi nhận được lỗi sau:

model.compile(loss='binary_crossentropy', optimizer='rmsprops', metrics= ['accuracy']) 
Traceback (most recent call last): 

File "<ipython-input-33-40773d534448>", line 1, in <module> 
model.compile(loss='binary_crossentropy', optimizer='rmsprops', metrics=['accuracy']) 

File "/home/kiran/anaconda/lib/python3.5/site-packages/keras/models.py", line 589, in compile 
**kwargs) 

File "/home/kiran/anaconda/lib/python3.5/site-packages/keras/engine/training.py", line 469, in compile 
self.optimizer = optimizers.get(optimizer) 

File "/home/kiran/anaconda/lib/python3.5/site-packages/keras/optimizers.py", line 614, in get 
# Instantiate a Keras optimizer 

File "/home/kiran/anaconda/lib/python3.5/site-packages/keras/utils/generic_utils.py", line 16, in get_from_module 
str(identifier)) 

ValueError: Invalid optimizer: rmsprops 

Sau đó, khi tôi bấm vào optimizers.py Tôi lấy mã được phát triển bởi Keras trong môi trường của tôi. Sau đó trong đoạn code tôi đã thay thế tất cả các từ khóa "rmsprop" bằng "rmsprops" và lưu tệp. Vì vậy, tôi nghĩ rằng tôi phải có bản cập nhật optimizers.py trong hệ thống của mình. Nhưng khi tôi quay trở lại tập tin gốc của tôi và chạy model.compile nó ném cùng một lỗi.

Mọi trợ giúp sẽ thực sự được đánh giá cao. Cảm ơn trước.

Trả lời

0

Bạn có chắc chắn rằng đó là trình tối ưu hóa mới mà bạn muốn không? Không phải là chức năng mục tiêu tùy chỉnh? Mục tiêu có thể được tùy chỉnh nó dễ dàng để xác định, tối ưu hóa là phức tạp hơn.

Đã có một số lượng lớn trình tối ưu hóa với nhiều tham số. Tuy nhiên nếu bạn thực sự muốn đi xuống con đường đó tôi sẽ khuyên bạn nên đi đến tensorflow! Sau đó, bạn sẽ có thể sử dụng this in Keras

Đó là tất cả những gì tôi có thể làm cho bạn, nhưng có thể có một cách khác mà tôi không biết.

1

Tôi nghĩ rằng cách tiếp cận của bạn phức tạp và không nhất thiết phải như vậy. Hãy nói rằng bạn thực hiện tối ưu hóa riêng của bạn bằng cách subclassing keras.optimizers.Optimizer:

class MyOptimizer(Optimizer): 
    optimizer functions here. 

Sau đó, để nhanh chóng nó trong mô hình của bạn, bạn có thể làm điều này:

myOpt = MyOptimizer() 
model.compile(loss='binary_crossentropy', optimizer=myOpt, metrics= ['accuracy']) 

Chỉ cần vượt qua một thể hiện của tối ưu hóa của bạn như là tham số tối ưu hóa của model.compile và đó là nó, Keras bây giờ sẽ sử dụng trình tối ưu hóa của bạn.

Các vấn đề liên quan