clj-python / clj-python/libpython-clj
pytorch lightning Fail
Nessuno ha ancora preso questa issue.
- Lingua principale
- Clojure
- Stelle
- 1.2k
- Fork
- 74
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
Following code stop with
AttributeError: 'builtin_function_or_method' object has no attribute 'code'. Did you mean: 'call'?
(ns pytorchlightning.core
(:gen-class)
(:require
[libpython-clj2.python :as py
:refer
[ py. py.-
as-jvm
set-attr!
get-item
->py-tuple
->py-list
]]
[libpython-clj2.require :refer [require-python]]
))
;;(py/initialize!)
(require-python
'[builtins :as python]
'[torch]
'[torch.nn :as nn :refer [Linear]]
'[torch.nn.functional :refer [mse_loss]]
'[torch.utils.data :refer [DataLoader Dataset]]
'[torch.optim]
'[pytorch_lightning]
)
(defonce model (atom nil))
(def LitModel
(py/create-class
"LitModel" [pytorch_lightning/LightningModule]
{"__init__"
(py/make-tuple-instance-fn
(fn [self]
(py. pytorch_lightning/LightningModule __init__ self)
(py/set-attr! self "layer" (Linear 1 1))
nil))
"forward"
(py/make-tuple-instance-fn
(fn [self x] (py. self layer x))
:arg-converter as-jvm
:method-name "forward"
)
"training_step"
(py/make-tuple-instance-fn
(fn [self batch batch_idx]
(mse_loss (py/get-item batch 1) (py. self forward (py/get-item batch 0)))
))
"validation_step"
(py/make-tuple-instance-fn
(fn [self batch batch_idx]
(mse_loss (py/get-item batch 1) (py. self forward (py/get-item batch 0)))
))
"test_step"
(py/make-tuple-instance-fn
(fn [self batch batch_idx]
(mse_loss (py/get-item batch 1) (py. self forward (py/get-item batch 0)))
))
"configure_optimizers"
(py/make-tuple-instance-fn
(fn [self]
(torch.optim/SGD
(py. self parameters)
:lr 0.02)
))
}))
(def SimpleDataset
(py/create-class
"SimpleDataset" [Dataset]
{"__init__"
(py/make-tuple-instance-fn
(fn [self data] (py/set-attr! self "data" data) nil))
"__len__"
(py/make-tuple-instance-fn
(fn [self] (python/len (py.- self data))))
"__getitem__"
(py/make-tuple-instance-fn
(fn [self idx]
(py/->py-tuple
[
(torch/tensor [(py/get-item (py/get-item (py.- self data) idx) 0)] :dtype torch/float32)
(torch/tensor [(py/get-item (py/get-item (py.- self data) idx) 1)] :dtype torch/float32)
]
)
))
}))
(def SimpleDataModule
(py/create-class
"SimpleDataModule" [pytorch_lightning/LightningDataModule]
{"__init__"
(py/make-tuple-instance-fn
(fn [self data] (py/set-attr! self "data" data) nil))
"train_dataloader"
(py/make-tuple-instance-fn
(fn [self]
(DataLoader (SimpleDataset (py.- self data )) :batch_size 2 :shuffle false)))
"val_dataloader"
(py/make-tuple-instance-fn
(fn [self]
(DataLoader (SimpleDataset (py.- self data )) :batch_size 2 :shuffle false)))
"test_dataloader"
(py/make-tuple-instance-fn
(fn [self]
(DataLoader (SimpleDataset (py.- self data )) :batch_size 2 :shuffle false)))
}))
(defn -main [& args]
(reset! model (LitModel))
(def data [[1.0 3.0] [2.0 5.0] [3.0 7.0] [4.0 9.0] [5.0 11.0]] )
(def data_pylist (py/->py-list data))
;; (println (py/get-item (py/get-item data_pylist 0) 0))
(def train_dataset (SimpleDataset data_pylist))
(def train_loader (DataLoader train_dataset :batch_size 2 :shuffle false))
;; ;;for debug
;; (def train_pylist (python/list train_loader))
;; (def train_pylist_0 (py/get-item train_pylist 0))
;; (println (py. @model training_step train_pylist_0 0) );;;OK. maybe this part work
(def trainer (pytorch_lightning/Trainer :max_epochs 10 ))
(def datamodu (SimpleDataModule data_pylist))
(py. trainer fit @model train_loader)
;;(py. trainer fit @model datamodu) ;;also fail
)
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia da -main e confronta la chiamata diretta a training_step con le chiamate a Trainer fit che falliscono, utilizzando le definizioni fornite di LitModel, SimpleDataset e SimpleDataModule. Riproduci l’AttributeError e analizza il traceback per identificare quale confine di integrazione non funziona; il lavoro è completato quando il flusso di addestramento mostrato funziona oppure l’incompatibilità è documentata chiaramente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- clojure, python
- Ambito
- machine-learning
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100