Open njs03332 opened 2 years ago
91쪽.
nn.Module
에 대하여 (추가 조사)
forward
함수만 정의하고 나면, (변화도를 계산하는) backward
함수는 autograd 를 사용하여 자동으로 정의됨.parameters()
에 의해 반환됨forward()
함수는 객체를 데이터와 함께 호출하면 자동으로 실행됨 model(입력 데이터)
와 같은 형식으로 객체를 호출하면 자동으로 forward 연산이 수행됨state_dict()
: In PyTorch, the learnable parameters (i.e. weights and biases) of a torch.nn.Module model are contained in the model’s parameters (accessed with model.parameters()). A state_dict is simply a Python dictionary object that maps each layer to its parameter tensor.참고자료: https://wikidocs.net/60036, https://tutorials.pytorch.kr/beginner/blitz/neural_networks_tutorial.html, https://pytorch.org/tutorials/recipes/recipes/what_is_state_dict.html
torch.save
args
의 early_stopping_criteria
= patience에 해당?
update_train_state
함수에서 if loss_t >= train_state['early_stopping_best_val']:
train_state['early_stopping_best_val']
)보다 크면' 이 아닌가?loss_t = loss.item()
t.item()
for a tensor t simply converts it to python's default float32t.item()
to maintain running loss instead of t because PyTorch tensors store history of its values which might overload your GPU very soonReduceLROnPlateau
: 원하는 에폭마다, 이전 학습률 대비 변경폭에 따라 학습률을 감소시켜주는 방식@classmethod - load_dataset_and_load_vectorizer: 새로운 객체 생성 시 @staticmethod - load_dataset_and_load_vectorizer: 객체 재사용 시
python의 3가지 method
static method과 class method을 굳이 나누는 이유는?
메소드 타입의 차이. instance 매소드를 사용하면 self 키워드를 사용하고 class 매소드를 사용하면 cls 키워드를 사용 static 매소드는 속성에 접근할 수 없기 때문에 사용하는 키워드가 없음.
class Cs:
@staticmethod
def static_method():
print("Static method")
@classmethod
def class_method(cls):
print("Class method")
def instance_method(self):
print("Instance method")
i = Cs()
Cs.static_method()
Cs.class_method()
i.instance_method()
_(언더스코어)와 __(더블언더스코어) 차이
class MyClass():
def __init__(self):
self._semiprivate = “Hello”
self.__superprivate = “,, world!”
—
from MyClass import *
mc = MyClass()
print(mc._semiprivate) # “Hello”
print(mc.__superprivate) # Error
테스트 손실: 1.8788902064164479 (기존 1.818398882945379) 테스트 정확도: 72.13541666666667 (기존 56.77083333333333)
self.convnet = nn.Sequential(
nn.Conv1d(in_channels=initial_num_channels,
out_channels=num_channels, kernel_size=3),
nn.BatchNorm1d(num_channels), # 추가
nn.ELU(),
nn.Conv1d(in_channels=num_channels, out_channels=num_channels,
kernel_size=3, stride=2),
nn.BatchNorm1d(num_channels), # 추가
nn.ELU(),
nn.Conv1d(in_channels=num_channels, out_channels=num_channels,
kernel_size=3, stride=2),
nn.BatchNorm1d(num_channels), # 추가
nn.ELU(),
nn.Conv1d(in_channels=num_channels, out_channels=num_channels,
kernel_size=3),
nn.BatchNorm1d(num_channels), # 추가
nn.ELU()
)
self.fc = nn.Linear(num_channels, num_classes)
https://excelsior-cjh.tistory.com/177
{'@': 0, 'T': 1, 'o': 2, 't': 3, 'a': 4, 'h': 5, 'A': 6, 'b': 7, 'u': 8, 'd': 9, 'F': 10, 'k': 11, 'r': 12, 'y': 13, 'S': 14, 'e': 15, 'g': 16, 'C': 17, 'm': 18, 'H': 19, 'i': 20, 'K': 21, 'n': 22, 'W': 23, 's': 24, 'f': 25, 'G': 26, 'M': 27, 'l': 28, 'B': 29, 'z': 30, 'N': 31, 'I': 32, 'w': 33, 'D': 34, 'Q': 35, 'j': 36, 'E': 37, 'R': 38, 'Z': 39, 'c': 40, 'Y': 41, 'J': 42, 'L': 43, 'O': 44, '-': 45, 'P': 46, 'X': 47, 'p': 48, ':': 49, 'v': 50, 'U': 51, '1': 52, 'V': 53, 'x': 54, 'q': 55, 'é': 56, 'É': 57, "'": 58, 'ß': 59, 'ö': 60, 'ä': 61, 'ü': 62, 'ú': 63, 'à': 64, 'ò': 65, 'è': 66, 'ó': 67, 'Ś': 68, 'ą': 69, 'ń': 70, 'á': 71, 'ż': 72, 'õ': 73, 'í': 74, 'ñ': 75, 'Á': 76} input channel 77 num channel 256 ???
string.punctuation; 구두점 모음 string
# command
print(string.punctuation, '\ntype: ', type(string.punctuation))
# output
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
type: <class 'str'>
dict_ = {'a': 1, 'b': 2}
def function_return_json(d):
return function_print(**d)
def function_print(a, b):
print(a, b)
function_return_json(dict_)
# output
1 2