일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- CGAN
- mocov3
- mme paper
- BYOL
- ConMatch
- dann paper
- Pseudo Label
- Meta Pseudo Labels
- cifar100-c
- 컴퓨터구조
- UnderstandingDeepLearning
- 딥러닝손실함수
- simclrv2
- shrinkmatch
- Pix2Pix
- 백준 알고리즘
- WGAN
- remixmatch paper
- GAN
- CycleGAN
- 최린컴퓨터구조
- CoMatch
- Entropy Minimization
- semi supervised learnin 가정
- dcgan
- SSL
- conjugate pseudo label paper
- tent paper
- shrinkmatch paper
- adamatch paper
- Today
- Total
목록딥러닝 (76)
Hello Computer Vision
텐서 데이터에 적용되는 여러 메소드들이 있는데 이를 한번 정리해보려고 한다. tensor.data x = torch.tensor([1,2]) print(x) print(x.data) y = torch.rand(3,5) print(y.data) tensor([1, 2]) tensor([1, 2]) tensor([[0.7150, 0.9495, 0.3474, 0.3829, 0.2828], [0.4531, 0.4677, 0.0863, 0.6763, 0.2480], [0.6295, 0.0573, 0.5454, 0.4892, 0.5464]]) x, y = next(iter(loader)) print(x.shape) print(x[1].data) torch.Size([32, 3, 32, 32]) tensor([[[0..
1. 데이터의 개수는 같지만 각각의 해당되는 데이터 라벨은 다르다. file_path = '/content/CIFAR-100-C/labels.npy' data_array = np.load(file_path) print("데이터 형태:", data_array.shape) print("데이터 내용:") cor = np.array(cifar_dataset.targets) == data_array print(np.sum(cor)) 데이터 형태: (50000,) 데이터 내용: 475 2. 제일 놀라운 사실. CIFAR100 C 에는 50,000개의 단순한 노이즈 데이터들이 있는 것이 아닌, 10,000개 묶음으로 severity 가 높아진다. 한마디로 처음 10개의 이미지와, 10000~10010번째 이미지, 2..
corrupted 된 이미지들을 다루다보면은 여러 개의 데이터셋을 다루다보니 코드가 더러워질 수 있다. 이에 대해서 코드의 간편성을 위해서는 데이터셋을 합칠 수 있다. mnist = datasets.MNIST(root = './sample_data', train = True, download =True, transform = transforms.ToTensor()) cifar = datasets.CIFAR10(root = './sample_data', train = True, download = True, transform = transforms.ToTensor()) concat = torch.utils.data.ConcatDataset([cifar, mnist]) print(len(concat)) pr..
이번에 논문에 나온 값들이 어떻게 변하는지 알아보려던 찰나에 아무 생각 없이 * 연산자를 쓰니까 원하던 값들이 안나와서 적어두려고 한다. x = torch.tensor([[0.85, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.07]]) xt = torch.transpose(x, 0, 1) i = torch.eye(10) diag = torch.diag(x) xx = xt * x k = (i + 8*i - 8*xx) k = torch.inverse(k) pseudo = k.matmul(xt) p = torch.mul(k, xt).sum(0) print(xt.shape) print(x.shape) print(i.shape) print(xx.shape) print..
딥러닝 훈련을 시키면서 가벼운 텐서로 세팅할 때도 있는데 이럴 때마다 구글을 서칭한다.. 그래서 torch의 가벼운 문법을 정리해보려고 한다. a = torch.tensor(1) b = torch.tensor([1]) c = torch.tensor([[1,2, 3], [3,4,5]]) print(a) print(a.shape) print(b) print(b.shape) print(c) print(c.shape) tensor(1) torch.Size([]) tensor([1]) torch.Size([1]) tensor([[1, 2, 3], [3, 4, 5]]) torch.Size([2, 3]) 이렇게 가벼운 텐서 정도는 torch.tensor를 사용해서 생성할 수 있다. a = torch.arange(1,..
아주 가끔 loss를 찍어보면 nan을 만날 수 있다. 내 경우는 loss 미분에 대해 learning rate를 낮추니 해결되었는데 이유에 대해서 한번 간단한 코드로 실험해보려고 한다. a = torch.exp(torch.tensor(100)) b = torch.tensor(100) print(a) print(torch.log(a)) print(a / a) softmax에 기본적으로 exp가 사용되니 적용해보았다. tensor(inf) tensor(inf) tensor(nan) 결과는 이렇게 나오는데 즉 inf는 너무 높은 값이 나오면 컴퓨터에서 처리하지 못하는 것을 알 수 있다. 음의 방향으로 너무 크다면 -inf라는 결과가 나온다. 세번째에 나온 nan같은 경우 무한대 / 무한대 이런 값을 넣으니 ..
semi supervised learning을 공부하면은 labeled 데이터가 몇개가 있냐에 따라 성능이 달라진다. 따라서 dataset에서 labeled데이터 개수에 맞추어 분리하는 과정이 필요하다. cifar10 데이터셋을 사용하고 labeled 데이터가 4,000개 있을 때의 setting의 예시이다. num_labels = 4000 #labeled 데이터 개수 num_classes = 10 # class 개수 labels = cifar_dataset.targets # list로 되어있다 labels = np.array(labels) # array 로 변경해준다 label_per_class = num_labels // num_classes #클래스별 데이터 개수 labeled_idx = [] #i..
우선 직관적으로 코드만 보여주면 다음과 같다. layout = {'Loss' :{ 'loss':['Multiline', ['loss/label', 'loss/unlabel', 'loss/unlabel_c', 'loss/aux']] }} writer.add_custom_scalars(layout) 이렇게 layout을 저장하고 writer.add_scalar('loss/label', Lx, epoch+1) writer.add_scalar('loss/unlabel', Lu, epoch + 1) writer.add_scalar('loss/unlabel_c', Lu_c, epoch + 1) writer.add_scalar('loss/aux', Laux, epoch + 1) 값들을 다음과 같이 저장하면 된다. 그..