apt 나 apt-get 이나 둘다 패키지 관리 툴이에요.
아무거나 쓰셔도 됩니다. 다만 apt란 명령어를 쓰라고 추천합니다.
이와 관련된 역사는 수많은 블로그에 많이 있기에 따로 길게 주저리주저리 안합니다.
apt 나 apt-get 이나 둘다 패키지 관리 툴이에요.
아무거나 쓰셔도 됩니다. 다만 apt란 명령어를 쓰라고 추천합니다.
이와 관련된 역사는 수많은 블로그에 많이 있기에 따로 길게 주저리주저리 안합니다.
문제 상황 :
GPU머신에서 도커 컨테이너 상에서 작업하는데 250GB의 tfrecord를 컨테이너 내부에 저장하다가 용량이 꽉찼었다. 단순한 명령어 조차 듣지 않았었다. (ls, history 등등) 바보 같다고 생각할 수 있지만 도커가 SSD 공간에서 돌아간다는 생각조차 못하고 있었다.... 바보... 아무튼 그래서 해결책은 간단하게 찾았다. 데이터를 하드로 옮기는 방법이다. 컨테이너를 다시 만들때 하드디스크(hdd)를 마운트 시켜서 쓰면 되는 것 이였다.
여튼 데이터가 잘 옮겨지고 있는지 확인해보고 싶어서 디렉토리 내부의 각 파일들의 용량을 확인하는 명령어를 알아보았다.
du 라는 명령어가 있다.
du -sh * : 현재 있는 폴더에 존재하는 각 파일들의 용량을 보여준다.
ls -lh : 이것 역시 가능하다.
손에 잡히는 것을 사용하는게 중요하다.
서버에서 파일을 옮길 때 Permission Denied가 발생한다고?[chown] (0) | 2020.09.05 |
---|
프로젝트를 진행하던 중 데이터를 옮겨야하는 일이 생겼었어요.
일단 전 FileZilla 라는 프로그램을 사용합니다. UI도 있고 편하잖아요.
4가지만 기입해서 연결 버튼만 누르면 파일 이동이 가능하니깐요!
그런데...!
"Permission Denied"
GPU 머신에 있는 하드디스크에 접근을 해야하는데 파일 복사가 안 되더군요. 그래서 생각을 해보았습니다.
이 파일 소유권자가 누구로 되어 있지? 이걸 보는 방법은 쉬워요.
터미널에서 "ls -l"를 실행해보면 파일의 소유권자의 이름부터 어떤 권한이 있는지 전부 다 보입니다.
그래서 보니깐 파일의 소유자가 "root"로 되어 있었어요. 하지만 전 사용자계정으로 로그인을 했었기 때문에 파일을 건드릴 수 없었던 거죠. 그.래.서!
바로 소유권자 변경을 해주었습니다. 그 명령어는
chown 명령어 입니다. 이 명령어를 사용하는 방법은
codechacha.com/ko/linux-chown/
Linux - chown 명령어로 소유자 변경하는 방법
chown 명령어는 파일의 Owner 또는 Group을 변경하는 명령어입니다. 재귀적으로(Resursive) 하위 폴더 소유자 모두 변경하려면 chown 명령어에 -R 옵션을 주면 됩니다. 예제를 통해 사용방법을 자세히 알��
codechacha.com
이 분이 잘 설명해주셨습니다.
위 링크의 마지막 부분에 있는 내용인데 오..! 이런 방법도 있군! 이렇게 생각했어요.
Linux 용량 확인하는 방법 (df/du) (0) | 2020.09.07 |
---|
#이 글들은 전반적인 내용들만을 올려놓습니다. 완벽한 이해를 하고자 하신다면 다른 글을 검색해 주세요.
이어서 바로 ResNet에 대해 리뷰를 해보겠습니다.
ResNet의 제일 중요한 기본 구성 요소는 residual block이라는 것입니다.(위에 왼쪽 그림 참조!) 우리가 만드려는 네트워크의 깊이가 점점 깊어질 수록 많은 수의 layer가 들어가게 되고 이에 따라 계산량이 엄청나게 많아지게 됩니다.
요즘 다양한 딥러닝 문제해결을 위한 모델들을 접하고 있는데 .. 제 생각이 난잡하게 돌아가고 있는 듯 하여 내용이 정리가 된다면 업로드 하겠습니다.
AlexNet, VGGNet, ResNet, Inception, DenseNet의 아키텍쳐 (2) (0) | 2020.04.02 |
---|---|
AlexNet, VGGNet, ResNet, Inception, DenseNet의 아키텍쳐 (1) (0) | 2020.03.11 |
포스팅을 한지 시간이 제법 지났네요. 이제 VGGNet에 대해 이야기를 할 두번 째 시간입니다. 먼저 그림부터 살짝 보고 가세요.
2014년에는 크게 다른 두 가지 아키텍쳐가 있었고 성능이 크게 향상되었어요. 이 차이점은 네트워크의 깊이가 깊을 수록 심했다고 합니다.(아마 성능차이가 메인이였을 거에요. 연산량 역시 19가 훨씬 많았을거구요.)
VGG 16은 16개의 층을 가진 아키텍쳐 입니다. 2개의 Conv 레이어와 풀링레이어 그리고 마지막에는 fully connected 레이어까지요. VGG 네트워크가 갖고 있는 아이디어는 더더더 깊어진 네트워크 그리고 그와 함께 더더 적은 필터들 입니다. VGGNet은 8개의 층을 가진 AlexNet과 비교했을 때 layer의 수를 늘렸습니다. 지금 현재 VGG는 16~19의 layer 변형 모델이 있죠. 한가지 주목 해야할 점은 이러한 모델이 3x3의 작은 필터 사이즈를 유지한다는 것입니다. 기본적으로 이것은 인접한 픽셀을 아주아주 조금만 참고하게 되는 가장 작은 필터 사이즈입니다. (3x3이란 것이 말이에요) 그리고 요 VGG는 말이죠. 네트워크를 통해서 주기적으로 풀링을 해주며 3x3 conv의 간단한 구조를 유지했습니다.
VGGNet에는 몇개의 더 많은 conv layer, pooling layer, 더 많은 conv layer 등등 정리해서 conv layer와 pooling layer가 있습니다. VGG Architecture에는 총 16개의 conv 및 fully connected layer가 있습니다. VGG 16의 경우 16개가 있는거구요. VGG 19의 경우 19가 있고 이 VGG19의 경우 매우 유사한 형태를 갖지만 몇개의 conv layer가 더 있다는 점에서 차이점을 갖게 됩니다.
그래서!! 위의 그림에서 보시다시피.(위의 그림은 해석하면서 보세요. 따로 설명 안할게요) 총 138M의 총 파라미터와 각 이미지가 96MB(일반 이미지 보다 훨씬 커요!)를 잡아 먹게 되어 계산 비용이 아주 많이 들게 되는 것이죠. 참고로 ILSVRC 대회에서 7.3의 오류율을 기록했습니다.
VGGNet은 2014년 ImageNet Large Scale Visual Recognition Challenge(ILSVRC)에서 선두주자였습니다.
다음 글은 ResNet에 대한 리뷰입니다.
AlexNet, VGGNet, ResNet, Inception, DenseNet의 아키텍쳐 (3) (0) | 2020.04.02 |
---|---|
AlexNet, VGGNet, ResNet, Inception, DenseNet의 아키텍쳐 (1) (0) | 2020.03.11 |
안녕하세요! 여러분 만약에 AlexNet,VGGNet, ResNet, Inception 그리고 DenseNet에 대한 제법 정확한 정보를 얻기 위해 오신 것이라면 여기만한 블로그가 없을 거에요.
각각의 네트워크에 대한 더 자세한 내용은 구글에 검색하면 쉽게 정보를 얻을 수 있으리라 생각합니다. 그리고 천천히 글을 읽으면 이해가 될 거에요.
ILSVRC Challenge에 제출된 하이퍼파라미터와 정확도를 써서 레이어들에 대한 설명을 할 것 입니다.
- 참고로 이 글은 다음 링크에서 나온 2차 저작물입니다.(번역 정도만.... 했어요.. 쉿!)
Architecture comparison of AlexNet, VGGNet, ResNet, Inception, DenseNet
Layers Description with Hyperparameter and accuracy in ILSVRC Challenge results
towardsdatascience.com
AlexNet
알렉스넷은 최초로 제안된 거대한 크기의 CNN(convolutional neural network) 아키텍쳐에요. 그리고 이 알렉스넷은 ImageNet classification이라는 대회에서 꽤 잘 먹혔죠.
알렉스넷은 대회에서 쓰이게 되며 딥러닝방식이 아닌 다른 모델들을 큰 격차로 눌렀어요.
알렉스넷의 구조는 Pooling layer, Normalization, conv-pool-norm 그리고 몇개의 conv layer, pooling layer 그리고 이후로 몇개의 fully connected layer가 뒤에 붙는 Conv Layer입니다. 실제로 이건 "LeNet Network"와 아주아주 비슷하게 보이죠? 전체적으로 단순히 몇개의 층이 더 있을 뿐이죠. 이 conv layer 중 5개 그리고 최종적으로 연결된 레이어가 출력 클래스로 가기 전에 2개의 fully connected layer가 있어요.
알렉스넷은 ImageNet에서 훈련되었으며, 입력은 227x227x3의 사이즈를 가진 이미지들이 사용되었어요. (지금부턴 바로 위의 그림 "AlexNet Layers Details[2]" 를 보면서 따라오세요) AlexNet의 첫번째 레이어를 봐바요. 첫번째 레이어는 Conv Layer에요. 그리고 이 첫번째 layer는 11x11 사이즈의 filter이구요, 그 필터는 96개가 있다고 해요. 그 필터들은 stride가 4로 설정되어 있어요. 그렇게 해서 output으로 우린 55x55x96 을 얻었어요. 그리고 35K개의 파라미터들을 첫번째 레이어에서 얻었어요.
그림을 보면 두번째 Layer는 Pooling Layer에요. 이 때 우린 총3개의 필터를 갖고 있어요. 이 때 필터는 3x3사이즈를 갖고 있고 stride는 2로 설정되어 있어요. Pooling Layer의 결과값 크기는 27x27x96 이죠. 학습할 파라미터는 아무것도 없습니다. 0개죠. 아니 왜죠?? 라고 말 할 수 있는데 답은 간단합니다. 파라미터들은 가중치이기 때문이죠. 가중치는 계속해서 배우려고 하는거죠. Convolutional Layer는 우리가 배우게 해야하는 파라미터들을 가지고 있지만 Pooling Layer에서 하는 것은 전부 다 규칙으로 우리가 정해놓았죠. pooling을 해야하는 영역에 대해 거기서 최대값을 가져오는거죠. 그래서 우리가 학습해야할 파라미터가 아무것도 없는 것죠.
처음에 11x11의 필터가 있고, 5x5 필터도 있고 3x3 필터도 있어요. 끝에는 우린 4096사이즈의 fully connected layer가 2개 있어요. 끝에는 FC1000이 Softmax로 들어가죠. Softmax는 1000개의 ImageNet클래스들과 연결이 됩니다. 이 아키텍쳐는 ReLu의 최초 사용이에요!(ReLU를 처음으로 사용했다는 점에서 중요하다고 하더라구요)
하이퍼파라미터 :
이 아키텍쳐(설계)는 ReLU의 비선형성을 최초로 사용했어요. AlexNet은 Normalization(정규화) 레이어 역시 사용했어요. Data Augmentation로는 AlexNet에서는 flipping, jittering, cropping,colour 정규화 등등을 사용했다고 논문에 나와요. 다른 파라미터들로는 Dropout은 0.5를 줬고, SGD + Momentum으로는 0.9를 줬구요. 처음에 학습속도(Learning Rate)로는 1e-2(0.01)를 줬다고 합니다. Validation 정확도가 변화가 없어질 시점이 되면 10배 정도 더 감소시켰다고 해요. 이 알렉스넷 Regularization에 사용된 것은 L2를 사용했고 L2에는 5e-4의 Weight Decay를 썼다고 합니다. 그리고 3GB의 메모리를 가진GTX580 GPU에서 학습했다고 합니다.
최종적으로 알렉스넷은 ImageNet Large Scale Visual Recognition Challenge(ILSVRC)에서 16.4%의 오류율을 달성하는 성과를 냈다고 합니다.
-> 다음 글은 VGGNet에 대해 다시 살펴볼 거에요.
AlexNet, VGGNet, ResNet, Inception, DenseNet의 아키텍쳐 (3) (0) | 2020.04.02 |
---|---|
AlexNet, VGGNet, ResNet, Inception, DenseNet의 아키텍쳐 (2) (0) | 2020.04.02 |
import sys
import heapq
heap = []
#파이썬의 경우 일반적인 input을 받게 될 경우 시간이 오래 걸린다.
n = int(sys.stdin.readline())
for i in range(0,n):
x = int(sys.stdin.readline())
fake_x = -x
if x is 0:
if len(heap) is 0:
print(0)
else:
hhhh = (-1)*heapq.heappop(heap)
print(hhhh)
else:
heapq.heappush(heap,fake_x)
Baek Joon Algorithm(백준 알고리즘): 10998번 (0) | 2019.08.27 |
---|---|
Baek Joon Algorithm(백준 알고리즘): 10871번 (0) | 2019.08.27 |
Baek Joon Algorithm(백준 알고리즘): 10869번 (0) | 2019.08.27 |
Baek Joon Algorithm(백준 알고리즘): 10828번 (0) | 2019.08.27 |
Baek Joon Algorithm(백준 알고리즘): 10430번 (0) | 2019.08.27 |
https://www.acmicpc.net/problem/10998
10998번: A×B
두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
참.. 이 문제도 올리기가 민망하다.
#include <iostream>
using namespace std;
int main(){
int a,b;
int c;
cin >> a >> b;
c = a*b;
cout << c << endl;
return 0;
}
Baek Joon Algorithm(백준 알고리즘): 11279번 (0) | 2019.08.27 |
---|---|
Baek Joon Algorithm(백준 알고리즘): 10871번 (0) | 2019.08.27 |
Baek Joon Algorithm(백준 알고리즘): 10869번 (0) | 2019.08.27 |
Baek Joon Algorithm(백준 알고리즘): 10828번 (0) | 2019.08.27 |
Baek Joon Algorithm(백준 알고리즘): 10430번 (0) | 2019.08.27 |