Wpis z mikrobloga

W jakis sposob najlepiej napisac klase, ktora by dzialala z modelami #machinelearning ?
Czy mozna stworzyc klase, ktora by dziedziczyla po danym modelu, czy lepiej zadeklarowac w srodku klasy zmienna ktora by przechowywala taki model?
np

class Klasa(Model):
...
obiekt = Klasa()
obiekt.metodazmodelu()

czy raczej

class Klasa:
model = Model()

obiekt = Klasa()
obiekt.model.metodazobiektu()

Czy w ogole takie podejscie jest tu niepotrzebne/niepoprawne?

#programowanie #python #datascience
  • 13
W jakis sposob najlepiej napisac klase, ktora by dzialala z modelami #machinelearning ?


@przepyszna_frytka: Pytanie na które nie da się jednoznacznie odpowiedzieć ;) .

A uniwersalna odpowiedź to :"to zależy, co ty chcesz z tym w ogóle robić".

bo
1) Możesz w ogóle nie tworzyć klasy i używać modeli
2) Możesz stworzyć klasę która w ogóle nie trzyma modelu jako atrybutu i tylko do metod przekazywać model
3) Możesz dziedziczyć, jeżeli
@LowcaG: bo sam na razie nie wiem, jakie rozwiazanie bedzie najlepsze
chce stworzyc „biblioteke” korzystajaca z scikit-opt by optymalizowac parametry modeli, czyli ta klasa, by posiadala metody optymalizujace parametry, zapisujace je do modelu itp
tylko nie wiem na razie, jak na razie ta klase stworzyc

mysle, ze popatrze na te spoosby, o ktorych wspomniales i zobacze co uda mi sie wyklikac
bo sam na razie nie wiem, jakie rozwiazanie bedzie najlepsze


@przepyszna_frytka:
No właśnie, bo najlepsze rozwiązanie to takie jakie sobie wymyślisz aby sensownie działało jako całość.

@przepyszna_frytka: > chce stworzyc „biblioteke” korzystajaca z scikit-opt by optymalizowac parametry modeli, czyli ta klasa, by posiadala metody optymalizujace parametry, zapisujace je do modelu itp

@przepyszna_frytka: Czyli teraz jeżeli chcesz aby Twoja klasa była jak by modelem tylko bez parametrów który sam się
@przepyszna_frytka: Nie znam się to się wypowiem ( ͡° ͜ʖ ͡°) Z mojej perspektywy wydaje mi się, że najlepiej byłoby jakbyś zrobił metodę która przyjmuje model i zwraca zoptymalizowany model. Wtedy łatwo i intuicyjnie można by było dodać twoją optymalizację do istniejącego projektu.
@przepyszna_frytka: Ja też nie jestem do końca pewny, co chcesz zrobić. Ale być może chodzi Ci o to, że chcesz stworzyć Optimizer. Większość bibliotek ML robi to mniej więcej tak:
class Optimizer:
def _init_(self, params, lr=0.001, inne=...)
i potem
model = Model(...)
opt = Optimizer(params=model.weights)
opt.step() # pojedynczy krok optymalizacji parametrów
Czyli do twojej klasy przekazujesz tylko parametry modelu, a nie cały model.