토큰들 사이의 연관 관계를 모델이 학습할 수 있도록, 모든 토큰 쌍을 묶어주면 어떨까? (xi, xj) idea 자체는 Skip Bigram입니다. Bigram이라는 것은 단어나 토큰이 두 개가 나란히 있을 때, Bigram이라고 합니다. Skip Bigram은 토큰 두 개를 보지만, 꼭 나란히 있는 두 개의 토큰일 필요는 없고 띄엄 띄엄 볼 수 있다는 것입니다. 문장이 주어졌을 때, 단어들은 x1, ..., xt와 같이 주어졌을 것입니다. 그러면 RN은 모든 pair case에 대해서 신경을 씁니다. 그리고 모든 pair에 대해서 Relation Neural Network를 만듭니다. code: import torch import torch.nn as nn class RN(nn.Module): """S..
import torch import torch.nn as nn class CBOW(nn.Module): def __init__(self, vocab_size, embed_dim): super().__init__() self.output_dim = embed_dim # padding은 embedding을 lookup해서 사용하지 않게 하기 위해 # vocab_size * embed_dim 의 크기를 가진 테이블 생성 self.embeddings = nn.Embedding(vocab_size, embed_dim, padding_idx=0) def forward(self, x): # (batch_size, sequence) -> (batch_size, sequence, embed_dim) # 해당 시퀀스를 L..
참고자료: https://www.datamanim.com/dataset/99_pandas/pandasMain.html index에 특정 값이 포함된 경우만 추출하는 방법 e.g. item_name이라는 칼럼에 Chips라는 값이 들어있는지 여부확인 df[df['item_name'].str.contains('Chips')].head(5) index에 특정 값이 포함되지 않은 경우만 추출하는 방법 df[~df['item_name'].str.contains('Chips')].head(5) 특정칼럼의 index에 N으로 시작하는 행만 출력 df[df['item_name'].str.startswith('N')].head(3) df의 데이터 중 item_name 값의 단어갯수가 15개 이상인 데이터를 인덱싱하라 d..
layer = nn.Conv2d(3,5,3, stride = 2, padding = 1) 이 Layer의 weight와 bias는 어떻게 될까? 일단 parameter의 값들을 살펴보자면, input channel: 3, output channel: 5, kenel_size: 3, stride: 2, padding:1 weight, bias 개수에 stride와 padding의 개수는 상관이 없다. 위 Layer을 직접 그려보면 아래와 같을 것이다. 3*3 커널을 가진 3채널 filter을 5개있는 형태이다. weight와 bias 개수를 출력해보면 print(layer.weight.shape) print(layer.bias.shape) 아래와 같다. torch.Size([5, 3, 3, 3]) torc..
Layer의 노드가 필요이상으로 너무 많으면 Loss를 잘 줄이지만 기계적으로 정답을 맞히게 된다 -> Overfitting문제 발생!! -> 각 노드의 역할 분담을 잘 시켜서 적절히 학습이 이루어지도록 만들어주는 것이 Dropout의 목적이다. 직접 코드로 실행해보고 결과를 보려고 한다. x = torch.randn(3,7) drop = nn.Dropout(p=0.3) print(drop(x)) 여기서 p는 노드를 사용하지 않을 확률이다.(논문에는 사용할 확률로 되어있음.) 결과는 아래와 같다. tensor([[-1.7319, -0.8754, -0.0000, 1.6761, 0.0000, -0.9214, 0.0000], [-1.6490, 0.6455, 0.0178, -0.5975, 0.0000, -0.0..
$$ - \sum_n^i (y^{i} \ast log(p^{i})+(1-y^{i}) \ast log(1-p^{i})) $$ 위 식은 Binary Cross Entropy 식이다. Multiclass classification은 위에서 $$1-p^{i}$$ 값이 다른 P 결과로 대체한 식으로 유도된다. $$- \sum_n^i (y^{i}_{0} \ast log(p^{i}_{0}) + y^{i}_{1} \ast log(p^{i}_{1})...) $$ 근데, 어차피 1개의 class만 1이고 나머지는 0이기 때문에 아래와 같이 정리해볼 수 있다. $$- \sum_n^i (log(p^{i}_{j}) ) $$ 직접 구현해본 결과, torch에서 제공해주는 CrossEntropy는 Softmax를 따로 해주지않아도..