728x90

발생 Error

Git Bash에서 다음 명령어를 입력할 경우,

git add .

 

 warning: could not open directory ... permission denied

Error 발생

 

 

Error 원인

add 명령어를 실행하려는 사용자의 SSH keys가 등록되지 않아 접근 권한이 없어서 발생

 

 

해결 방법

사용자의 새로운 SSH keys를 생성

 

Git bash에서 아래와 같이 입력

ssh-keygen -t rsa -C "Github_email"

ssh-keygen: SSH 접속을 위한 인증 키를 생성, 관리 및 변환하는 명령어

옵션 -t: 어떠한 암호화방식을 사용할 것인지 지정

-> ssh-keygen -t rsa: RSA 암호*화 방식으로 SSH 키 생성

* RSA 암호: 공개키 암호시스템의 하나, 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘

 옵션 -C (생략 가능): comment "키 명칭(임의 지정 가능)"

 

Enter passphrase (empty for no passphrase): 암호 입력

Enter same passphrase again: 암호 재입력

 

이후 출력되는 내용에서 공개키 저장 주소를 확인

Your public key has been saved in /c/Users/.../.ssh/id_rsa.pub

.pub 파일을 메모장으로 실행하고 전체 내용 복사

 

Github - Settings - SSH and GPG keys - New SSH key

Title: SSH key Name(임의 설정)

key: 전체 복사한 .pub 내용 붙여넣기

Github 계정 pw 입력 후 SSH keys 발급 완료

 

 

➕ SSH key 인증 방식

SSH key pair는 두 개의 암호키(public, private)로 이뤄져있으며, key pair 인증방식은 public key로 암호화한 메세지를 그 쌍이되는 private key로만 해석할 수 있음(암호화에 사용한 public key로도 암호화된 메세지 해석 불가)

클라이언트가 SSH key로 인증을 시도할 경우, 서버는 클라이언트가 private key를 갖고 있는지를 테스트한 후 갖고 있을 경우에만 클라이언트의 명령을 수행

 

 

참고 자료

📑 [Git] Permission Denied 에러 해결하기

📑 ssh 사용시 암호 대신 SSH key로 인증하기

📑 리눅스 ssh-keygen

📑 git@github.com: Permission denied (publickey) 해결 방법

728x90
728x90

발생 Error

Git Bash에서 다음 명령어를 입력할 경우,

git ls-files

 fatal: not a git repository (or any of the parent directories): .git

Error 발생

 

 

Error 원인

Git Bash가 실행된 폴더에 git에 대한 정보를 담은 파일이 없기 때문에 발생

 

Git Bash를 Window 검색창에서 실행시켜서 .git 폴더에 대한 탐색이 Local C\user\사용자명에서 일어난 것으로 추정

(추후, init으로 인해 .git 폴더가 Local C\user\사용자명에 생성되었으므로 위와 같이 추정)

 

 

해결 방법

git init
git remote add origin repository_url

git init을 통해 Git 저장소를 생성(초기화)하기

-> .git이라는 하위 폴더를 생성해서 해당 폴더를 git으로 관리할 수 있게 해줌

-> 작업이 필요한 곳에서 init 명령을 실행함으로써 현재 디렉토리에서 작업 및 버전 관리를 진행하겠다고 git에게 알려주는 기능

 

git remote add origin repository_address(Github 레포지토리 주소)를 입력해서 해당 repository를 local PC에 생성시킴

-> origin이라는 이름의 저장소(repository_address)를 추가

-> 원격저장소의 주소를 직접 입력하는 대신 origin이라는 이름을 사용할 수 있음

(⭐ git bash 명령어: 복사(ctrl+Insert), 붙여넣기(shift+Insert))

 

➕ 원격 저장소에서 데이터 가져오기: pull & fetch & clone

pull: 원격 저장소의 소스를 가져오고 해당 소스가 현재 내 소스보다 최신 버전일 경우, 지금의 버전을 해당 소스에 맞춰 올림, merge 명령어를 사용

: 원격 저장소에서 fetch 명령어로 가져온 후, merge까지 한 번에 수행하는 명령얼 실제 파일의 내용이 변경됨

git pull origin(remote_name) master(branch_name)

 

fetch: 원격 저장소에서 소스를 가져올 뿐 merge는 하지 않음

git fetch remote_name

 

clone: 원격 저장소에서 프로젝트를 가져오는 역할로 로컬 저장소와 원격 저장소의 내용을 일치시킴

git clone remote_url

 

victolee님의 티스토리 git 명령어 포스팅 일부 발췌

 

 

 

참고 자료

📑 [해결방법] fatal: not a git repository (or any of the parent directories): .git

📑 Git Init/Add

📑 2.5 Git의 기초 - 리모트 저장소

📑 [git] git을 이용한 버전관리 - 기본편 (remote, push, pull, fetch, clone) with github

📑 [Git] git pull 소개와 git clone과의 차이점

📑 [Git] 명령어(2) - remote, push, clone, pull

728x90
728x90

 

Github 폴더 이름 변경을 검색하면 git bash에서 다음과 같은 명령어를 입력하라는 내용이 나온다.

(참조: [Git] 폴더 이름 바꾸기)

git ls-files // 폴더 및 파일 확인
git mv 현재폴더명 바뀔폴더명
git add .
git commit -am "commit message 입력"
git push origin master

 

따라서 Git Bash에 git ls-files를 입력하면 다음과 같이 나온다.

첫번째 명령어는 git을 입력 안해서 command not found error가 발생하였고,

두번째 명령어는 git을 입력했지만 fatal: not a git repository (or any of the parent directories): .git error가 발생하였다.

 

 

fatal: not a git repository (or any of the parent directories): .git

(참조: [해결 방법] fetal: not a git repository (or any of the parent directories): .git)

 

 

Error를 해결하고 다시 폴더명을 변경하려고 git ls-files를 입력하면 아무것도 안나온다.

 

Github에서 Pull해서 폴더와 파일을 끌어와야하나 해서 git pull origin main을 작성했는데, 새로운 branch를 만들어버렸다..

아닌가..? Github에는 아직 1 branch로 표시된다..

Github에 있던 파일이 local pc로 pull 되었다.

 

 

초심으로 다시 git mv 현재폴더명 바뀔폴더명을 입력해보면..

git add .에서 permission denied error가 발생한다ㅎ.

 

 

Permission: denied

(참조: [해결 방법] Permission denied)

사용자의 SSH keys가 등록되지 않아 접근권한이 없어서 발생한 것으로, 새로운 SSH keys를 생성하면 된다.

 

SSH keys를 등록하고나서도 Permission Error가 발생하길래 Git Bash를 강제로 종료했는데,

Another git process seems to be running in this repository.. 새로운 Error가 발생했다..

 

 

⭐  Another git process seems to be running in this repository

(참조: [해결 방법]  Another git process seems to be running in this repository)

같은 repository 안에서 다른 git process가 동작하고 있을 때 발생하는 Error다.

 

 

lock 파일 제거 후, git add .을 실행하는데,  this operation must be run in a work tree error가 발생했다.

lock 파일 제거하면서 .git 디렉토리로 이동을 했는데, .git 디렉토리 내부에서 git add .을 명령할 경우 발생한다고 한다.

 

 

⭐ this operation must be run in a work tree

(참조: [해결 방법] this operation must be run in a work tree)

cd ../으로 상위 디렉토리로 이동을 했다.

 

 

다시 처음부터 git mv Machine_Learning AI를 명령하니 fetal: bad source error 발생..ㅠ

 

 

fetal: bad source

(참조: [해결 방법] fetal: bad source)

이미 폴더명이 AI로 변경되어 Changed to be committed된 상태였다.

 

수정사항 없이, git commit -m "change the folder name"으로 커밋을 해주었다.

$ git commit -m "change the folder name"
[main 3dc0358] chane the folder name
 2 files changed, 0 insertions(+), 0 deletions(-)
 rename {Machine_Learning => AI}/ann_model.py (100%)
 rename {Machine_Learning => AI}/useful_method_from_numpy.py (100%)

 

마지막으로 git push를 입력해주었는데 다음과 같은 안내를 받았다.

$ git push
fatal: The current branch main has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin main

To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.

fatal: The current branch main has no upstream branch.

(참조: [해결 방법] fatal: The current branch main has no upstream branch)

 

안내대로, git bash에 다음내용을 입력한다.

$ git push --set-upstream origin main

 

Git Bash에서 폴더이름이 변경된다.

 

오늘 폴더명 변경하면서 만난 오류들을 따로 Git Category에 정리해야겠다.

 

 

마지막으로는 폴더 이름 변경한 기념으로..

 

728x90
728x90

Github Web에서 폴더 이름을 변경하는 것은 정확히 새로운 폴더를 만들어서 기존의 파일을 옮겨주는 작업이다.

그러므로 폴더 내 다량의 파일이 존재할 경우, Git Bash를 이용하는 것이 좋다.

 

1. 이름을 바꾸고자 하는 폴더에 들어있는 파일의 수정하기(Edit this file) 클릭

(⭐ 파일을 Guthub Web에서 수정하고자 할 때는, Commit한 내용이 아닌 파일/폴더명을 클릭해줘야 한다.)

 

2. 폴더 이름을 바꾸고 커밋

폴더_이름/: 폴더 생성

/상태에서 Backspace: 폴더 이름 변경

../: 앞의 폴더 이름 전체 삭제

 

 

 

참조: [Github] 깃허브에서 폴더 이름 변경하는 법

728x90
728x90

AI(Aritificial Intelligence): 인간의 지능을 인공적으로 구현한 기능을 갖고 있는 컴퓨터

ML(Machine Learning): AI의 한 분야로, 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야

DL(Deep Learning): ML의 한 분야로, 다량의 데이터를 스스로 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야

 

Deep Learning은 인공신경망(ANN)에 기초하여 기계학습 알고리즘을 갖음

 

인공신경망의 종류와 개념

ANN(Artificial Neural Network, 인공 신경망): 두뇌의 신경망을 흉내 낸 인공지능 기술

사람 Machine
Neuron Node
Calculation Parameter
Neuron Layer Layer

DNN 구조에서 은닉계층(Hidden Layer)이 1개인 경우로 입력 계층, 은닉 계층, 출력 계층으로 구성

 

 

DNN(Deep Neural Network, 심층 신경망): ANN 구조에서 은닉계층이 여러층으로 구성된 구조

 

 

CNN(Convolution Neural Network, 합성곱 신경망): 영상처리에 많이 활용되는 합성곱을 사용하는 신경망 구조

기존처럼 데이터에서 지식을 추출해 학습하는 것이 아니라 데이터의 특징을 추출하여 특징들의 패턴을 파악하는 구조

특징을 추출하는 과정은 Convolution과정과 Pooling과정으로 나뉨

 - Convolution
: 데이터를 추출하는 과정으로 도출된 특징을 추상화하여 특정층으로 압축하며, 이렇게 도출된 층이 Convolution Layer

⭐ 예시

(3, 3) 크기의 kernel로 (5, 5) 이미지 행렬에 합성곱 연산을 수행하는 과정

Colvolution 과정이 끝난 결과를 특성맵(Feature Map, 이미지의 '출력')이라고 함

 

특성맵은 입력보다 크기가 작아지기 때문에 layer를 늘릴 경우, 최종 특성맵의 크기가 매우 작아지는 문제가 발생

-> 합성곱 연산 이후에도 특성 맵의 크기가 입력의 크기와 동일하게 유지되도록 하고 싶다면 패딩(padding)을 사용

패딩(Padding): (합성곱 연산을 하기 전에) 입력의 가장자리에 지정된 개수의 폭만큼 행과 열을 추가해주는 것


 - Pooling
: 특성 맵을 다운 샘플링하여 특성 맵의 크기를 줄이는연산 과정

: max pooling: Convolution 과정에서 만들어진 feature map의 가장 큰 값만 가져와 사이즈를 줄이는 것

: average pooling: Convolution 과정에서 만들어진 feature map의 평균값을 가져와 사이즈를 줄이는 것

⭐ 예시

(Max pooling 예시)

풀링 연산은 커널(kernel)과 스트라이드(stride*) 개념이 존재한다는 점에서 합성곱 연산과 유사하지만, 합성곱 연산과 달리 학습해야 할 가중치가 없으며 연산 후에 채널 수가 변하지 않음

* stride: kernel의 이동 범위, 상기 이미지 예제에서는 2로 kernel간 겹치는 영역이 없도록 하였음

 

RNN(Recurrent Neural Network, 순환 신경망): 반복적이고 순차적인 데이터를 학습시키는데 우수한 인공 신경망 구조로 자연어 처리나 동영상 분류, 음악 장르 분류 둥에 활용할 수 있음

: 계층의 출력이 순환하는 신경망으로 과거 자신의 가중치를 기억하고 학습에 반영함으로서 신경망의 성능을 높임

 

 

 

소스 코드

🔗 HJ0216/TIL

 

참고 자료

📑 주요 인공신경망(ANN, DNN, CNN, RNN, AE, GAN, UNET) 개념

📑 머신러닝 딥러닝 알고리즘을 소개합니다

📑 tensorflow.keras.sequential api

📑 07-01 합성곱과 풀링(Convolution and Pooling)

📹 딥러닝 이론

📹 [딥러닝] RNN 기초 (순환신경망 - Vanilla RNN)

 

728x90

'Naver Clould with BitCamp > Aartificial Intelligence' 카테고리의 다른 글

Scalar, Vector, Matirx, Tensor  (0) 2023.01.20
MultiLayer Perceptron  (0) 2023.01.20
Hyper-parameter Tuning  (0) 2023.01.20
ANN Model Construction  (0) 2023.01.15
Practice for AI Learning Model Construction  (0) 2023.01.14