이 글은 양주종의 코딩스쿨 리눅스(Linux) 공부 시작하기를 수강하며 정리한 글입니다.

 

리눅스 마스코트, 턱스(Tux)

 

1강 리눅스(Linux)

 

인터넷에서 웹 페이지를 보려고 할 때, Web Server Computer로부터 웹 페이지 자료를 얻어음

Web Server Computer가 작동하기 위해서는 운영체제(OS)가 설치되어있어야 하며, 이러한 OS로는 Linux, Unix, Windows Server 등이 있음

OS가 제공하는 기능은 Web 서비스 외에도 Mail, Chatting, FTP(파일 송수신) 서비스 등이 있음

Server Computer를 작동시키는 OS를 Network Operating System(네트워크 운영 체제)라고 함

서비스 요청자(Client)의 OS: Client Operating System

서비스 제공자(Server)의 OS: Network Operating System

 

 

 


2강 리눅스 공부 순서

 

1. 일반 사용자로서 기초 사용법: File, Editor, 기초 명령어, Shell 공부

2. 관리자(root)로서 Linux 설치, Process, Package, 일반 사용자 관리 공부

3. 각종 서비스: Web, Mail, DNS*, FTP** 공부

 * DNS: Domain Name System, 네트워크에서 도메인이나 호스트 이름을 숫자로 된 IP 주소로 해석해주는 TCP/IP 네트워크 서비스

 ** FTP: File Transfer Protocol, 인터넷 상에서 파일을 전달하는데 사용되는 방법이나 프로그램

4. 보안: Log* 공부

 * Log: 기록, 컴퓨터의 처리 내용이나 이용 상황을 시간의 흐름에 따라 기록한 것

5. 프로그래밍: gcc, make, shell 등 공부

 

 

 


3강 리눅스 역사

 

OS: Unix 개발 -> Unix를 지원하기 위해 C언어 개발 -> C언어 기반으로 Unix update

학습용 Unix, Minix를 기반으로 Kernel*이 개발됨

 * Kernel: Unix에서 기본 기능을 실행하는 부분을 가리키는 용어로 응용 프로그램이나 주변 장치가 올바르게 작동하도록 통제하고 디스크나 메모리 등의 자원을 배분하거나 응용 프로그램의 실행 등을 처리함

GNU project(프리 소프트웨어의 작성과 보급을 위한 프로젝트) + Minix 기반 Kernel -> Linux 개발

 

 * Linux로 알아보는 Open Program과 Open Source 차이

Open program: 무료로 다운로드 받아서 사용할 수 있지만 프로그램에 대한 Source Code는 볼 수 없음

Open Source: 프로그램에 대한 Source Code를 볼 수 있음

-> Open Source를 기반으로 새로운 프로그램을 만들어서 상업용으로 판매 시, Open Source 사용에 대한 허가를 요하는 조항을 붙일 수 있으며, Linux도 동일한 방식으로 운영됨

 

 

 


4강 리눅스 배포판

 

Redhat -> Fedora(Enterprise 용) -> CentOS(For Free)

Debian -> Ubuntu

 

 

 


5강 일반사용자/관리자

명령 프롬프트 창: 일반사용자($), 관리자(#)

 

 

 


6강 리눅스 명령어 형식

 

명령어가 많으므로 도움말을 참조하여 Linux 사용

man 명령어: 도움말

명령어 --help: 도움말

info 명령어: 도움말

q: 도움말에서 빠져 나오기

 

명령어 예: ls [option*] [directory or file] ([]: 생략 가능)

* option은 대부분 중간에 위치하지만, 종류에 따라 끝에 위치할 수도 있음

ls : 'List'의 줄임말로 파일과 디렉토리 목록을 출력, ls.과 동일

ls . : .은 현재 Directory(Folder) 목록 보기

ls .. : ..은 상위 Directory 목록 보기 

ls /: /는 최상위 Directory 목록 보기

 

명령어 예: cp [option] [source] [target]

 

 

 


7강 리눅스 파일 다루기

 

1. 생성

 - mkdir: Directory 생성

 - vi: vi + enter: 이름없는 파일 생성

 - cat: cat > aa "내용 입력" + ^D: aa 파일이 없을 경우, aa 파일을 생성하고 입력된 내용 저장(aa 파일이 있을 경우, 덮어씌워짐)

 - touch: touch a:  a 파일이 없을 경우, 사이즈가 0인 빈 a 파일 생성(a 파일이 있을 경우, a 파일의 시간을 현재 시간으로 변경)

 

2. 복사

 - cp: cp a ../: a를 상위 Directory에 복사

 

3. 삭제

 - rm: rm -r: Directory 삭제(rmdir과 동일한 기능으로 많이 사용됨)

 

4. 이동

 - mv: mv [복사할 파일/디렉토리 이름] [이동 위치]

 

5. 이름 바꾸기

- mv: mv [복사할 파일/디렉토리 이름] [바꿀 이름]

- rename* [변경 전 파일명] [변경 후 파일명] [대상 파일]

* rename: 잘 사용되지 않으며 rename 대신 move 사용

 

Linux 명령어 참조 블로그: [Linux] 기본 명령어

 

 

 


8강 리눅스 파일 분류

 

파일

 1.일반 파일

  1.1. txt 파일

  1.2. binary 파일: 컴퓨터가 이해할 수 있는 파일, 컴파일* 과정을 거친 파일

  (컴파일: Compile, 인간이 구분하기 쉬운 언어인 고급 언어로 작성된 프로그램을 기계어로 변역하는 것)

 2. 특수 파일

  2.1. Directory 파일 (⚠️ 디렉토리는 파일의 하위 개념)

  2.2. 장치 파일

   2.2.1. block device 파일: HDD, CD-ROM 등 블록이나 섹터 단위로 데이터를 전송하는 디바이스

   2.2.2. character divice 파일: 키보드, 마우스 등 입출력 장치로 바이트 단위로 데이터를 전송하는 디바이스

   2.2.3. link 파일

   2.2.3.1. hard link: reference variable

   2.2.3.2. soft link(sybolic link): pointer variable, 바로가기 아이콘

 

Link FIle의 예:

cp a b

(a) (b): cp 명령어를 통해 공간 b가 새롭게 생성

ln a c

(a, c): ln 명령어를 통해 공간 a에 c라는 이름을 추가적으로 부여(공간 생성 X), Hard Link

ln -s(s 옵션 추가) a d

(d) -> (a): 공간 d가 공간 a를 가르킴(공간 a의 위치 정보를 갖고 있음), Soft Link

Machine Learning의 정의

: Machine Learning is defined as a technology that is used to train machines to perform various actions such as predictions, recommendations, estimations, etc., based on historical data or past experience.

Machine Learning enables computers to behave like human beings by training them with the help of past experience and predicted data.

기계 학습은 과거 데이터나 경험을 기반으로 예측, 추천, 추정 등과 같은 다양한 작업을 수행하도록 기계를 훈련시키는데 사용되는 기술로 정의된다. 또한 기계 학습으로 과거 경험과 예측 데이터를 통해 컴퓨터가 인간처럼 행동할 수 있도록 한다.

 

 

Machine Learning의 과정

1. y = wx + b 형태의 임의의 예측 함수 생성

(y: 결과값, w, weight: 가중치, x: 대입값, b, bias: 치우침)

2. 과거 데이터나 경험을 기반으로 (x, y)를 대입하여 최소의 오차(loss, error, cost)를 만드는 최적의 가중치(weight) 탐색

3. 최적 예측 함수에 추정 필요 데이터 입력 및 자료 획득

 

 

Machine Learning Model Construction을 위한 준비물

 - TensorFlow FrameWork*: 언어(Python 등), 제공자(Google)

 - PyTorch FrameWork: 언어(Python 등), 제공자(FaceBook)

(*FrameWork: 코드에 큰 틀(Frame)을 제공하여 개발의 편의성을 올려주는 도구)

 - TensorFlow를 사용하기 위한 통합개발환경(IDE): VS code, Jupyter notebook, Pycharm 등

 

학원에서 사용 중인 Tensorflow FrameWorkPython, IDE: VS code를 중심으로 기술합니다.

TensorFlow

TensorFlow

: Google에서 만든 딥러닝 프로그램을 쉽게 구현할 수 있도록 다양한 기능을 제공해주는 오픈 소스 📚라이브러리*

(*Library: 다른 개발자들이 특정 기능을 수행하기 위해 작성해놓은 코드 뭉치)

: Tensor(다차원 배열*) Flow(흐름)

* 다차원 배열

출처: furkangulsen.medium.com

 

TensorFlow를 사용하기 위한 언어: Python

 

Machine Learning을 수행함에 있어 Python을 직접적으로 설치하는 대신 Machine Learning에 사용되는 다양한 기능들이 기본적으로 포함된 Python 배포판 Anaconda3 사용

+ conda라는 환경/패키지 설정 관리자가 존재하여 독립된 작업 환경을 갖춘 가상환경 구축에 유리

 

 

⭐ 환경 설정

1. Google: Anaconda Download

2. Google: Visual Studio Code Download

3. Anaconda Prompt 실행

4. conda 명령어를 통한 가상환경 구축

 4.1. conda list: 설치된 Python pkg/library 목록

 4.2. conda env list /conda info —envs: 구축된 가상 환경 목록

 4.3. conda create -n 가상환경_이름 python==3.9.7 anaconda: Python version 3.9.7 설치 및 Anaconda에 포함된 기본 pkg 설치 

 4.4. conda active 가상환경_이름: 가상환경 접속

(⚠️ 가상환경 접속 후 prompt 창에 (가상환경_이름) 표시 확인)

 4.5. conda info: 현재 접속중인 가상환경 정보 표시

 

 유용한 conda 명령어

 conda deactivate: 현재 접속중인 가상환경 비 활성화

 conda remove --name 가상환경_이름 --all: 가상환경 삭제

(⚠️ Conda Environment Error: caanot remove current environment: 현재 활성화되어있는 상태에서 해당 가상환경을 삭제하려고 할 때 발생하는 에러로 반드시 비활성화를 시킨 후 삭제해야 함)

참조: 아나콘다(Anaconda) 가상환경 사용법

 

5. Python Library의 간편한 사용을 위한 환경 추가 구축

: Python Library는 Python pkg Index(PyPI)에서 다운로드 후 사용 가능

-> 시간이 오래 소요되고 복잡한 방법이므로 이러한 작업들을 대신 수행해주는 ‘pip’라는 Python pkg 설치 및 관리하는 시스템을 사용

(⚠️ Python 버전에 따라 pip가 내장되어있는 경우도 있으므로 설치 전 확인)

 5.1. pip가 미설치된 경우

  5.1.1. python이 설치된 가상환경 안에서 curl <https://bootstrap.pypa.io/get-pip.py> -o get-pip.py

  5.1.2. python get-pip.py

 5.2. pip가 설치된 경우

  5.2.1. anaconda prompt에서 python이 설치된 가상환경에 접속 후 tensorflow 설치

  pip install tensorflow-cpu==2.7.4

  (⚠️ cpu 버전을 안 쓰면 최신 버전이 설치됨)

  (pip install tensorflow: cpu, gpu에 tensorflow 설치)

 

⭐ 활용: sklearn(scikit-learn) version 수정

1. anaconda prompt 실행

2. 가상환경 접속: activate tf27

3. 설치된 pkg 목록 확인: pip list

4. scikit-learn 설치 삭제: pip uninstall scikit-learn

5. scikit-learn 설치: pip install scikit-learn

(⚠️ pip install scikit-learn==1.1.3: 1.1.3 버전 설치)

(⚠️ sklearn install → 버전 미 입력 시, 최신 버전 설치)

 

 유용한 pip 명령어 list

pip install --upgrade pip: pip version upgrade

pip install pip=="원하는 버전": pip version downgrade

pip list: 설치 완료된 패키지 확인

pip install "pkg_name": 패키지 설치

pip install "pkg_name==version": 원하는 버전의 패키지 설치

pip uninstall "pkg_name": 패키지 제거

pip show "pkg_name": 설치완료 패키지 세부 정보 확인

 

 

6. 통합개발환경(IDE*: Integrated Development Envirnment)에서 가상환경 사용하기

* IDE: 프로그램 개발과 관련된 모든 작업을 하나의 프로그램안에서 처리할수 있는 환경을 제공하여 효율적으로 소프트웨어를 개발할 수 있도록 도와주는 도구

IDE가 제공하는 기능 4가지

 6.1. 코드 편집 기능

 6.2. 디버거 기능(코드에 문제가 없는지 확인할 수 있도록 하는 기능)

 6.3. 컴파일러 기능(작성된 코드를 기계어로 변환해주는 기능)

 6.4. 인터프리터 기능(코드를 한 줄씩 순차적으로 실행시키는 기능)

IDE의 종류: Spyder, Jupyter Notebook, VS code, Pycharm 등

참조: [Python] 통합개발환경(IDE) 정의 및 구성

 

VS code 실행 후, 확장자: python, python for VS Code, python Extension Pack, python Indent 설치

VS code Terminal 창

오른쪽 하단부를 (3.9.7(”tf27”: conda))로 변경: interpreter 클릭 후 anaconda에서 생성한 가상환경 tf27로 접속

 

 

 


⭐ 가상환경 구축 요약 ⭐

1. Anaconda3 download

2. Local disk C에 Anaconda3 폴더 생성 후 설치 시, 경로 지정

3. Visual Studio Code download

4. VS Code 사용 시, 파일을 저장 할 폴더 생성 후 설치 시, 경로 지정

(⚠️ Local disk C의 사용자 폴더 내에 생성 시, 접근 권한 문제 발생하므로 사용자 폴더 밖으로 폴더 생성)

5. Anaconda Prompt 실행 후, conda env list로 가상환경 list 확인

(⚠️ 가상 환경 안에서 conda env list할 경우, 해당 가상환경이 보이지 않으므로, base 상태에서 하기)

6. conda create -n 가상환경_이름 python==3.9.7 anaconda: 가상환경에 python v3.9.7 및 anaconda 설치

7. activate 가상환경_이름: 가상환경에 접속 후, pip install tensorflow-cpu==2.7.4: cpu v2.7.4에 tensorflow 설치

8. VS code 실행 후, 인터프리터(오른쪽 하단)를 생성한 가상환경으로 변경

(⚠️ VS code를 먼저 실행한 경우, 새롭게 생성한 가상환경이 보이지 않을 수 있으므로 껐다 켜보기)

VS Code-Interpreter 선택창

9. 파일명.py(python 확장자)으로 파일 생성 후, VS Code 설치 시 지정한 경로에 파일이 생성되었는지 확인

 

 

 

소스 코드

🔗 HJ0216/TIL

'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
Types of Artificial Neural Networks  (0) 2023.01.15
ANN Model Construction  (0) 2023.01.15

+ Recent posts