python skorchモジュールfitの正しい引数の与え方がわからない

python

def test_eeg_classifier(X, Y): n_classes = 3 in_chans = X.shape[1] device = 'cuda' # Set if you want to use GPU # You can also use torch.cuda.is_available() to determine if cuda is available on your machine. cuda = True set_random_seeds(seed=20220109, cuda=cuda) # This will determine how many crops are processed in parallel input_window_samples = X.shape[2] n_classes = 3 in_chans = X.shape[1] # final_conv_length determines the size of the receptive field of the ConvNet model = Deep4Net(in_chans=in_chans, n_classes=n_classes, input_window_samples=input_window_samples, final_conv_length='auto').cuda() to_dense_prediction_model(model) # determine output size test_input = np_to_th( np.ones((2, in_chans, input_window_samples, 1), dtype=np.float32) ).cuda() out = model(test_input) n_preds_per_input = out.cpu().data.numpy().shape[2] #print(out) train_set = create_from_X_y(X[:480], Y[:480], drop_last_window=False, sfreq=250, window_size_samples=input_window_samples, window_stride_samples=n_preds_per_input) valid_set = create_from_X_y(X[480:600], Y[480:600], drop_last_window=False, sfreq=250, window_size_samples=input_window_samples, window_stride_samples=n_preds_per_input) cropped_cb_train = CroppedTrialEpochScoring( "accuracy", name="train_trial_accuracy", lower_is_better=False, on_train=True, ) cropped_cb_valid = CroppedTrialEpochScoring( "accuracy", on_train=False, name="valid_trial_accuracy", lower_is_better=False, ) # valid_set = Dataset(X[480:600], Y[480:600]) # train_set = Dataset(X[:480], Y[:480]) clf = EEGClassifier( model, cropped=True, criterion=CroppedLoss, criterion__loss_function=nll_loss, optimizer=optim.AdamW, optimizer__lr = 0.005, optimizer__weight_decay = 0.5*0.00001, train_split=predefined_split(valid_set), batch_size=10, callbacks=[ ("train_trial_accuracy", cropped_cb_train), ("valid_trial_accuracy", cropped_cb_valid), ], ) clf.fit(train_set, y=None, epochs=100) if __name__ == "__main__": import h5py import numpy as np import mne from mne.io import concatenate_raws from skorch.helper import predefined_split from torch import optim from torch.nn.functional import nll_loss from braindecode.classifier import EEGClassifier from braindecode.datasets.xy import create_from_X_y from braindecode.training.losses import CroppedLoss from braindecode.models.deep4 import Deep4Net from braindecode.models.util import to_dense_prediction_model from braindecode.training.scoring import CroppedTrialEpochScoring from braindecode.util import set_random_seeds, np_to_th f = h5py.File("../data/ML_data1.h5", "r") dataDL_R = np.empty([200, 8, 500]) dataDL_L = np.empty([200, 8, 500]) dataDL_N = np.empty([200, 8, 500]) for i in range(200): data = f["A/R/%s" % (i)][:] dataDL_R[i] = data.T for j in range(200): data = f["A/L/%s" % (i)][:] dataDL_L[i] = data.T for k in range(200): data = f["A/N/%s" % (i)][:] dataDL_N[i] = data.T train_data = np.vstack((dataDL_R[0:160], dataDL_L[0:160], dataDL_N[0:160])) test_data = np.vstack((dataDL_R[160:200], dataDL_L[160:200], dataDL_N[160:200])) TT_data = np.vstack((train_data, test_data)) ans_R = np.array([1] * 200) ans_L = np.array([2] * 200) ans_N = np.array([0] * 200) train_ans = np.hstack((ans_R[0:160], ans_L[0:160], ans_N[0:160])) test_ans = np.hstack((ans_R[160:200], ans_L[160:200], ans_N[160:200])) TT_ans = np.hstack((train_ans, test_ans)) #print(TT_ans.shape) test_eeg_classifier(TT_data, TT_ans)

コメントを投稿

0 コメント