반응형

 

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에 정리해야겠다.

 

 

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

 

반응형
반응형

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

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

 

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

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

 

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

폴더_이름/: 폴더 생성

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

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

 

 

 

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

반응형
반응형

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)

 

반응형

'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
반응형

기본 환경: IDE: VS code, Language: Python

 

ANN 기본 모델 구축

# ann_model.py


import numpy as np


# 1. Refined Deta
x = np.array([1, 2, 3])
y = np.array([1, 2, 3])


# 2. Model Construction
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

model = Sequential()
model.add(Dense(1, input_dim=1))


# 3. compile and training for best weight, minimum loss
model.compile(loss='mae', optimizer='adam')
model.fit(x, y, epochs=10)


# 4. Evaluation and Prediction
result1 = model.predict([4])
print('result1: ', result1)


# 5. ect
model.fit(x, y, epochs=1000)
result2 = model.predict([4])
print('result2: ', result2)

model.fit(x, y, epochs=3000)
result3 = model.predict([4])
print('result3: ', result3)



'''
result1
Epoch 100/100
Result1:  [[4.001488]]

result2
Epoch 1000/1000
Result2:  [[3.9903853]]


result3
Epoch 3000/3000
Result3:  [[4.000531]]

'''

Source Code 원본 주소: basic_ML_model.py

 

코드 해석

import numpy as np

: numpy* import 및 약칭 np 지정

* numpy: 다차원 배열, n*n 행렬 등을 고속으로 처리할 수 있도록 도움을 주는 Python Library로, Numpy를 통해 생성한 배열을 ndarray(N-Dimension Array)라고 함

numpy library를 import하여 numpy에서 제공하는 다양한 method를 사용할 수 있음

 - np.shape: ndarray의 dimension 구성 반환

 - np.dtype: ndarray의 data type 반환

 - np.ndim: ndarray의 dimension 수 반환

 - np.size: ndarray의 data 개수 반환

# useful_method_from_numpy.py

import numpy as np

x = np.array([[1, 2, 3, 4],
             [2, 3, 4, 5],
             [3, 4, 5, 6]])

print(x.shape) # (3, 4)
print(x.dtype) # int32
print(x.ndim) # 2
print(x.size) # 12

y = np.array([1,2,3])
print(y.ndim) # 1

z = np.array([[[1],[2]],[[11],[22]]])
print(z.ndim) # 3

Source Code 원본 주소: useful_method_from_numpy.py

 

model = Sequential()

순차모델 사용, 신경망 계층을 순차적으로 더하여 순차 모델로 불리며 신경망을 구성하는 방법 중 가장 기본적인 방법

차후, 복잡한 모델을 구성할 때에는 함수형 모델*(Functional Model)을 사용할 수 있음

* 함수형 모델은 신경망 계층을 순차적으로 계산하지 않을 수 있음

 

➕ Functional Model

# 2. Model(Function)
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input
input1 = Input(shape=(13,)) # input_shape=(13,)
dense1 = Dense(50, activation='relu')(input1) # Hidden Layer
dense2 = Dense(40, activation='sigmoid')(dense1)
dense3 = Dense(30, activation='relu')(dense2)
dense4 = Dense(20, activation='linear')(dense3)
output1 = Dense(1, activation='linear')(dense4) # output=1
model = Model(inputs=input1, outputs=output1) # Model Construction 끝 부분에서 최종적으로 input과 out을 정리

# Sequential model과 달리 dense를 직접 입력할 수 있으므로 순차적으로 계산하지 않을 수 있음
# (Sequential에서 2번째 layer 층을 순서를 옮겨서 4번째 layer 층으로 만들 수 있음)
# Sequential model과 달리 dense를 skip 할 수 있음

 

model.add(Dense(1, input_dim=1))

모델에 Dense Layer를 순차적으로 추가

Dense layer는 인공신경망(Artifical Neuron Network)에서 사용되는 레이어로, 입력과 출력을 연결시켜주는 역할을 함

layer의 종류로는 Dense 외에도 Convolution, MaxPooling, Flatten 등이 있음

 - Dense의 첫 번째 인자: 출력 뉴런수

 - Dense의 두 번째 인자: 입력 뉴런수

 

model.compile(loss='mae', optimizer='adam')

구성한 모델을 실제로 생성

loss를 측정하는 방법으로는 mae(mininum absolute error) 사용

MAE explaination image

오차를 보정하는 방법으로는 adam 사용

 

model.fit(x, y, epochs=10)

모델을 훈련하는 과정

 - fit의 첫 번째 인자: x_train_data

 - fit의 두 번째 인자: y_train_data

 - fit의 세번째 인자: epochs, 훈련 횟수

⚠️ 초기 weight가 랜덤값이므로 실행 시 마다 훈련 결과가 달라짐

⚠️ epochs가 과하게 높을 경우, 과적합(Overfitting) 문제가 발생할 수 있으므로 유의

 

➕ fit(verbose)에 따른 출력 형태 타입

model.fit(x, y, epochs=10, verbose=0)
'''
Result
진행과정 나오지 않음
'''

model.fit(x, y, epochs=10, verbose=1)
'''
Result
Epoch 50/50
323/323 [==============================] - 0s 762us/step - loss: 45.8877 - val_loss: 38.3869
'''

model.fit(x, y, epochs=10, verbose=2)
'''
Result
Epoch 50/50
323/323 - 0s - loss: 43.5736 - val_loss: 33.5931 - 214ms/epoch - 664us/step
'''

model.fit(x, y, epochs=10, verbose=3)
'''
Result # verbose = 3 이상
Epoch 50/50
'''

 

소스 코드

🔗 HJ0216/TIL

 

반응형
반응형

이 글은 양주종의 코딩스쿨 리눅스(Linux) 기초 강좌 30강 모음 수강하며 정리한 글입니다.

 

01강 CentOS7 설치

 

가상머신 VirtualBox-5.2.26
virtualbox.org: Downloads - VirtualBox older builds - VirtualBox-5.2.26 다운로드

* 가상 머신

: SW로 물리적인 HW를 대신하여 처리하는 머신(컴퓨터)

: SW로 구성된 가상의 PC에 OS를 설치하여 운영

: 여러 OS를 한 번에 사용할 수 있다는 장점이 있지만, 하나의 물리적 컴퓨터를 여러 OS가 나누어 사용하므로 처리속도 및 resource 사용 측면에서 단점이 될 수 있음

(참조: 쿠버네티스 부트캠프 5일차)

 

 

리눅스 CentOS-7
http://ftp.iij.ad.jp/pub/linux/centos-vault/7.6.1810/isos/x86_64/
CentOS-7-x86_64-Minimal-1810.iso 다운로드
(Minimal v: X-windows 없는 버전)

 

VirtualBox 실행

(참조: VirtualBox에 CentOS 7 설치하기)

 

1. 새로 만들기

이름: CentOS7, 이 외 Default 상태로 진행

-> CentOS7 전원 꺼짐 생성

 

2. 설정 - 저장소 - 컨트롤러: IDE 비어있음 - CD 모양 클릭 후, Download받은 CentOS 파일 선택

시스템이 디스크와 통신하기 위해서는 컨트롤러를 사용하며, 타입은 IDE/SCSI로 나뉨

이러한 컨트롤러 IDE에 설치할 O/S image 파일을 CentOS로 지정

 

3. 시작 클릭

 

4. 파일 - 환경설정 - 입력 - 가상머신 - 호스트 키 조합 단축키 클릭 후 F11 - 확인

 * F11을 누르면 커서를 가상환경 밖으로 움직일 수 있음

 

5. 언어: 한국어

 

6. KDUMP 설치 - kdump 활성화 해제 - 완료

 

7. 네트워크 및 호스트명 - 이더넷* 켬으로 변경, 호스트이름 변경(hj0216.linux.kr) 적용 - 완료

*이더넷(Ethernet): 대표적인 컴퓨터 네트워크 기술의 하나로, 가정이나 건물과 같은 로컬 환경의 컴퓨터 및 기타 장치를 네트워크에 연결하기 위해 개발된 통신 표준

이러한 로컬 환경은 LAN(Local Area Network)으로 정의되며 여러 장치를 연결하여 해당 위치의 다른 사람들과 정보를 작성, 저장 공유할 수 있음

 

8. SECURITY POLICY 끔으로 변경

 

9. 설치 시작

 

10. root 암호 설정 및 사용자 생성

root d=암호: r

사용자 성명: j, 사용자 암호: j

 

11. 설치 완료 후 재부팅

 

12. 부팅 완료 후 계정 생성 여부 확인

login: root

password: r

who am i -> root 확인

exit: logout

 

login: j
password: j
who am i -> j 확인

ctrl D: 재 로그인 단축키

 

root로 재 로그인

login: root

password: r

 

13. 각종 명령어 실행

df -h: Disk Free, 디스크 여유공간을 사람이 보기 좋은 MB, GB 단위로(-h 옵션 기능) 확인

date: 날짜 확인

rpm -qa: RedHat Pkg Manager, 설치한 pkg 목록
rpm -qa |(pipe라고 읽음) nl: 설치한 pkg 목록 및 개수
rpm -qa | wc -l: 설치한 pkg 개수

ping 8.8.8.8: Ping Test, 단말이 Network에 정상 접속되었는지, 데이터를 정상적으로 주고받는지 확인
ping -c3 8.8.8.8: 패킷 3개 보내는 방식으로 Ping test

systemctl* stop / disable firewalld: 방화벽** 일시적 끄기(부팅하면 켜짐) / 방화벽 완전 끄기
systemctl start / enable sshd: ssh*** 서비스 일시적 켜기(부팅하면 꺼짐) / ssh 서비스 완전 켜기

* systemctl과 systemd

Linux OS이기 때문에 부팅 과정에서 시스템을 초기화 하고 환경을 설정하는 프로세스가 필요하며, 이러한 역할을 하는 것이 systemd, system demon이며, 이러한 systemd를 systemctl 명령어로 관리함

** 방화벽: 미리 정의된 보안 규칙을 기반으로 출입 네트워크 트래픽(네트워크 장치에서 일정 시간 내에 흐르는 데이터의 양)을 모니터링하고 제어하는 네트워크 보안 시스템

*** ssh, Secure Shell: 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜이자 원격접속을 안전하게 할 수 있게 해주는 프로토콜

 

ctrl C: 작업 중단

반응형

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*