먼저 깃허브 저장소를 가장 따라하기 쉽게 설명해놓은 것은 이미 git에서 만들어 놓았다.

깃허브에서 new repogitory를 만들고 README를 initialize하지 않은채로 생성하면,

다음과 같이 페이지가 뜨게되는데, 회색 코드블럭에 있는 것을 따라하면 생성할 수 있다.

깃 저장소를 remote한 상태라면 파일을 업데이트하기 위해서는 대부분 다음과 같은 순서를 따른다.

1. git add *.py (파이썬 파일만 업데이트 할 경우)

2. git status
- add에서 추가한 파일의 상태가 나오게 된다. 만약 status에 원하는 파일이름이 없다면 다시 add를 해주어야한다.
- 또한, git을 commit하기 전에 파일을 수정했다면, 다시 add해주어야 한다.

3. git commit -m message
- add한 파일들에 대해 commit을 진행하여 본격적으로 깃 저장소에 업데이트할 수 있는 상태가 됩니다.
- message는 해당 commit에 대한 설명을 적어줍니다.

4. git push -u origin master
- push는 마지막으로 commit한 파일들을 깃 저장소에 업데이트 하겠다는 의미입니다. 

5. git pull
- 저장소의 내용을 전부 받아옵니다.


6. git clone git주소
- 해당 git 주소를 복제합니다.

7. git branch [브랜치 이름]
- 새로운 브랜치를 만듭니다.

8. git checkout [브랜치 이름]
- 해당 브랜치로 이동합니다.

등등...

python을 사용하여 디렉토리 안의 특정 확장자 또는 모든 파일을 찾을 수 있습니다.

--> import glob

을 통해 쉽게 접근할 수 있습니다.


1. 폴더 안의 모든 디렉토리 찾기

all_dir = glob.glob('./my_dir/*')

위와 같이 *을 사용하면 확장자 상관없이 모든 파일을 가져오겠다는 의미입니다.


2. 폴더 안의 폴더 안의 폴더 안의 파일 찾기

폴더 안에 또 디렉토리가 있는 경우가 있습니다. 

그럴때는 glob 함수에서 제공하는 파라미터인 recursive를 활성화시켜주면 됩니다.

# 디렉토리 안의 모든 파일을 찾고 싶은 경우(sub directory도 포함)
all_dir = glob.glob('./my_dir/*', recursive = True)

3. 특정 확장자만 찾기

이 또한, recursive를 활성화시켜주면 내부 폴더안의 폴더까지 뒤져서 전부 찾아줍니다.

all_dir = glob.glob('./my_dir/*.jpg')

all_dir = glob.glob('./my_dir/*.jpg', recursive = True)

 


4. glob을 이용하여 파일 생성일, 사이즈 등을 기준으로 정렬하고 싶은 경우

편리하게 쓸 수 있는 order는 여러가지가 있지만 대표적으로 다음과 같습니다.

  • os.path.getctime # 파일 생성일
  • os.path.getmtime # 파일 최근 수정일
  • os.path.getatime # 파일 접근일
  • os.path.getsize # 파일 사이즈
sorted_all_dir = sorted(glob.glob('./my_dir/*'), key = order)

 

Model.fit 후에 세션이 종료되고 램을 놔주지 않는 현상이 있다.

* 케라스 내부적으로 해결이 되지 않은 이슈라는 글을 본적이 있다. 


1. del model    * 해결되지 않음

2. gc.collect() + gc.collect() 여러번    * 해결되지 않음

3. tf.as_default_graph() 안에서 처리    * 해결되지 않음

4. K.clear_session()    * Case by Case

* 사용은 하고 있지만 죽는 경우도 있고, 안죽는 경우도 있었습니다. jupyter notebook의 경우 같은 cell 안에서 fit과 함께 실행시킨 경우에 될지도 모르겠네요. 

5. 확실한 방법. + 이 방법과 비슷하게 프로세스를 죽이는 방법도 있음. nvidia-smi를 통해 PID를 확인한 후 kill

from numba import cuda
cuda.select_device(num)
cuda.close()

 


# 메모리 초과 코드
N = int(input())
num_list = list(map(int, input().split()))

dp = [[0] * (N) for _ in range(N + 1)]

for i in range(1, N):
    for j in range(i, N):
        dp[i][j] = max(num_list[j - 1] + num_list[j], dp[i][j - 1] + num_list[j])
        
max_value = -1001

for sub_dp in dp:
    if(max_value < max(sub_dp)):
        max_value = max(sub_dp)
print(max_value)
N = int(input())
num_list = list(map(int, input().split()))

dp = [0 for _ in range(N)]
dp[0] = num_list[0]
for i in range(1, N):
    # 위 코드는 첫 번째 경우는 논리에 맞지 않음.
    # case_1 : 현재 인덱스의 수 -> 반례 2, (-2, -1)
    # case_2 : 이전까지의 연속합과 현재 값을 더한 것
    dp[i] = max(num_list[i], dp[i - 1] + num_list[i])
        
print(max(dp))

 

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 15650번(python)  (0) 2019.12.31
백준 15649번(python)  (1) 2019.12.31
백준 9251번(python)  (0) 2019.08.20
백준 2565번(python)  (0) 2019.08.19
백준 11054번(python)  (0) 2019.08.18

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 15649번(python)  (1) 2019.12.31
백준 1912번(python)  (0) 2019.08.20
백준 2565번(python)  (0) 2019.08.19
백준 11054번(python)  (0) 2019.08.18
백준 11053번(python)  (0) 2019.08.18