New
-
그래서, Docker가 뭔데?
그래서, Docker가 뭔데?여러분이 컴퓨터 프로그램을 만들 때, 그 프로그램이 다른 컴퓨터에서도 잘 돌아가야 해요. 그런데 여러분이 만든 프로그램은 다른 컴퓨터에서 잘 작동하지 않을 수 있어요. 이 문제를 해결하기 위해 도커가 등장했어요! 도커는 어플리케이션을 가상화하는 컨테이너 기술의 한 형태입니다. 이 기술을 사용하면 개발 환경을 일관되게 유지하고, 어플리케이션을 확장하고 배포하는 데 많은 이점을 제공합니다. 첫째, 도커는 환경의 일관성을 보장합니다. 개발자가 동일한 환경에서 어플리케이션을 개발하고 테스트할 수 있도록 도와줍니다. 이는 "내 컴퓨터에서는 잘 됐는데"와 같은 문제를 방지하고 팀 간 협업을 더욱 효율적으로 만들어줍니다. 둘째, 도커는 확장성이 뛰어나며 효율적입니다. 각 어플리케이션은 독..
-
Decoding 기법 정리
- Greedy Search - 현재 단어 다음에 나올 단어 후보 중 가장 확률이 높은 것 선택 - (장점) 비교적 간단한 알고리즘 - (단점) 동어 반복 현상 발생 - (단점) 현재 시점 바로 다음 단어만 고려. - Beam Search - 현재시점 이후 여러 step의 단어 조합을 keep 해놓고 해당 확률을 곱하여 점수를 내고 다른 조합과 비교하여 가장 높은 것 선택 - (장점) 뒤에 나올 확률이 높은 단어를 선택하여 좀 더 좋은 문장 생성 - (단점) 연산속도 증가 - (단점) 반복문제 여전히 존재 → n-gram(연속된 단어 개수 허용범위) 사용 - num_beams → Beam Search에 쓰이는 beam의 개수 - no_repeat_ngram_size → 특정 n-gram이 생성문장 내에서..
-
간단한 자연어 분석
1. 각 라벨별 가장 많이 나오는 단어 찾기 from collections import Counter import pandas as pd df = pd.read_csv('train.csv') uniqueLabel = df['label'].unique() for Label in uniqueLabel: temp_df = df[df['label'] == Label] words = ' '.join(temp_df['sentence']).split() word_counts = Counter(words) most_common_word = word_counts.most_common(5) print(f"'{Label}'에서 가장 많이 나오는 단어: {most_common_word}") 2. 각 라벨 별 분포도 체크 im..
-
Transformer_Encoder (트랜스포머 인코더 쉽고 자세하게 설명하기)
오늘은 트랜스포머의 인코더 부분을 쉽게 설명하고자함. 많은 사람들이 트랜스포머의 기법에 대해서 물어보면 "Self-attention 기법 사용... 특정 단어에 포커싱.." 혹은 "Q,K,V 사용해서...조합해서 가중치주는 기법..." 정도로만 대답함. 실제 어떤 식으로 돌아가는지 쉽고 자세하게 설명하기 위해 본 포스팅을 진행함. 애매하게 아는 분 환영 트랜스포머의 인코더 레이어는 그림에서 보이다 싶이 크게 3가지로 나눠볼 수 있음. - 멀티헤드 셀프어텐션 - 포지셔닝 와이즈 피드포워드 뉴럴네트워크 - 에디션 앤 레이어 노말리제이션 한글로 쓰니 형편없어 보이긴 하지만 그냥 넘어가겠음. 일단 입력 문장이 모델에 입력되면 > 포지셔닝 인코딩을 통과 > 벡터화(각 단어의 위치정보가 포함)된 입력 문장이 들어옴..
-
[논문리뷰] CNM: An Interpretable Complex-valued Network for Matching
양자역학을 간단하게 공부하였었습니다. 이를 어느정도 이해한 다음 양자컴퓨팅, 양자AI에 대해서 관련된 여러 논문들을 찾아보고 공부하였는데, 자연어를 양자역학과 융합한 논문이면서 동시에 NAACL에서 Award받은 논문이라 읽게 되었습니다. Paper Description 제목 : CNM: An Interpretable Complex-valued Network for Matching 저자 : Li et al. Date : 2021.06 인용수 : 53 Publisher : Association for Computational Linguistics Venue : NAACL(North American Chapter of the Association for Computational Linguistics) Awa..
-
[논문리뷰] Emoberta: Speaker-aware emotion recognition in conversation with roberta
Kim, Taewoon, and Piek Vossen. "Emoberta: Speaker-aware emotion recognition in conversation with roberta." arXiv preprint arXiv:2108.12009 (2021). introduction 감정 인식의 범위는 표정, 음성,텍스트 등 매우 넓음. 본 논문에서는 감정 인식의 하위 분야인 대화에서 감정 인식( ERC)에 중점을 둠. ERC는 한사람 또는 그 이상의 사람과 대화에 참여하는 현재 화자의 감정을 예측하는 것 감정을 인식하는 것은 감성 컴퓨팅 및 인간-로봇 통신과 같은 분야에서 중요. 인간은 대화(시각, 음성 등)을 하기위해 여러 감각 입력을 사용함 따라서 ERC 작업에는 여러 양식(시각, 오디오, 텍스트..
-
감정을 녹인 KoGPT 기반 챗봇 제작
주제 : 중고등학생을 위한 학과 교수님 인터뷰 챗봇 의의 : 대학 진학 전, 유용한 정보를 얻을 수 있음! 결과 미리보기 : 학습에 필요한 데이터셋 : 학과의 개수는 총 320개가 있으며, 평균 질의응답 개수는 11쌍, 최대 19쌍 까지 이어집니다. 데이터셋의 대표 질문: 1.교수님께서 전공 선택한 동기이 무엇인가요 2.어떤 분야에 관심 갖는 사람이 이 학과로 오면 좋을까요 3.이 학과에서 가장 중요한 공부는 어떤 내용인가요 4.이 학과에서 공부 잘할려면 중고등학생때 어떤 교과목을 공부하면 좋은가요 5.이 학과의 장점은 뭔가요 6.이 학과의 학생들이 겪는 어려움은 뭔가요 7.학과 졸업생이 가장 많이 진출하는 직업분야는 어느 곳인가요 8.학과의 앞으로의 전망은 어떤가요 9.지금은 없지만 앞으로 새로 생기게..
-
[논문리뷰] GPT Understands, Too
Liu, Xiao, et al. "GPT understands, too." arXiv preprint arXiv:2103.10385 (2021). NLU Task에서 약함을 보여주었던 GPT가 BERT 계열을 이긴 P-Tuning에 대한 논문입니다. 이를 이해하기 위해서 그동안의 자연어 이해 연구 흐름에 대해서도 설명합니다.
AI
-
[논문구현]Self-Explaining Structures Improve NLP Models
Sun, Zijun, et al. "Self-explaining structures improve nlp models." arXiv preprint arXiv:2012.01786 (2020). 현재 자연어 추론부분에서 상위 부분을 차지하고 있는 논문이다. 처음 Pre-print라는 것을 확인했을 때 꼬름한걸 알아차렸어야했는데, 여러 대회에서도 본 논문의 기법을 사용한 방법도 많고, 점수도 높게나와서 좋은 방법이구나 하였다. 학회에 등록 안된걸 무시하면 안되었다.. 논문 그대로 직접 구현해보니 Base 모델보다 성능이 더 안좋다. 이 기술 사용한다고 몇주날린지 모르겠다.. 부들.. 내가 잘못한건지, 논문에서 구라친건지 모르겠지만... 꼬름한점이 한둘이 아니다. 일단 서론은 여기까지하고 Abstract 1...
-
[논문리뷰]Are Prompt-Based Models Clueless?
Kavumba, Pride, Ryo Takahashi, and Yasuke Oda. "Are Prompt-based Models Clueless?." arXiv preprint arXiv:2205.09295 (2022). 2022년도 5월에 ACL에서 나온 논문입니다. 주제는 Prompt-based Models도 Superficial Cues를 사용하는지, 사용한다면 악용하여 일반화 성능이 떨어지게 만들지는 않는지 분석하여 확인하는 논문입니다. (참고자료) DiceLab SangHun Im
-
[논문리뷰] It’s Not Just Size That Matters: Small Language Models Are Also Few-Shot Learners
Schick, Timo, and Hinrich Schütze. "Exploiting Cloze-Questions for Few-Shot Text Classification and Natural Language Inference." Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics: Main Volume. 2021. Schick, Timo, and Hinrich Schütze. "It’s Not Just Size That Matters: Small Language Models Are Also Few-Shot Learners." Proceedings of the 20..
-
미술 치료 분석을 위한 AI기반 예술 작품 제작 및 증대 방안
미술 치료 분석을 위한 AI기반 예술 작품 제작 및 증대 방안 13th Workshop on Convergent and Smart Media System (CSMS) 2021.12.27
-
의미론적 관계 추론을 위한 문장 유사성 전이 학습 방법
의미론적 관계 추론을 위한 문장 유사성 전이 학습 방법 A Sentence Similarity Transfer Learning Method for Inference of Semantic Relation 2022 한국차세대컴퓨팅학회 학술대회 https://www.earticle.net/Article/A412361 의미론적 관계 추론을 위한 문장 유사성 전이 학습 방법 최근 텍스트 데이터 분석의 요구가 증가함에 따라 문장의 의미적 관계를 이해하고 사용자가 요구하는 분석 정보를 제공 하기 위한 추론 기법의 필요성이 증가하고 있다. 이를 위해 의미 관계 추 www.earticle.net
-
[논문리뷰]A Neural Probabilistic Language Model
A Neural Probabilistic Language Model Bengio, Yoshua, Réjean Ducharme, and Pascal Vincent. "A neural probabilistic language model." Advances in Neural Information Processing Systems 13 (2000). NPLM은 단어를 임베딩하여 벡터로 바꾸는 과정에서 신경망 기반의 기법을 제시하여 향후 Word2Vec으로 가는 기반이 되었다고한다. 간단하게 학습 데이터에 존재하지 않는 n-gram이 포함된 문장이 나타날 확률을 0으로 매긴다 n을 5이상으로 설정하기 어렵기 때문에 문장의 장기 의존성을 포착해내기 어렵다. 단어/문장 간 유사도는 고려 하지 않는다. neural n..
-
[논문리뷰]Distributed Representations of Words and Phrases and their Compositionality
Distributed Representations of Words and Phrases and their Compositionality Mikolov, Tomas, et al. "Distributed representations of words and phrases and their compositionality." Advances in neural information processing systems 26 (2013). Abstract (Eng.) The recently introduced continuous Skip-gram model is an efficient method for learning high-quality distributed vector representations that cap..
-
[논문리뷰]Efficient Estimation of Word Representations in Vector Space
2022.02.20 - [Artificial_Intelligence/Papers] - [논문리뷰]Distributed Representations of Words and Phrases and their Compositionality [논문리뷰]Distributed Representations of Words and Phrases and their Compositionality ㄴDistributed Representations of Words and Phrases and their Compositionality Mikolov, Tomas, et al. "Distributed representations of words and phrases and their compositionality." Advance..
List
-
[Linux] 6
- X 윈도 X윈도는 유닉스계열의 운영체제에서 사용되는 윈도우로, GUI (Graphical User Interface) 환경을 구현하기 위해 기본적인 프레임워크를 제공한 것이다. - 노틸러스 파일 브라우저를 사용하여 현재 폴더에서 연습 폴더를 만든 후 vi에디터를 사용하여 test.txt 파일을 만드는 (파일 내용은 아무거나 관계없음) 과정 a) 현재활동에 파일 or nautilus를 들어가면 파일 관리자가 열린다. b) 오른쪽 마우스키를 눌러 새폴더를 누르고 새로운 폴더를 만든다. c) 터미널을 켜서 cd명령어를 통해 새폴더 위치로 들어간다. d) vi tset.txt 를 입력하고 내용을 입력한다. e) esc를 누르고 :wq를 하여 저장하고 나온다. - LibreOffice 리브레오피스도 MS-Wi..
2021.01.13 23:20 -
[Linux] 8
- tar 명령이 포함된 패키지가 무엇인지 알아보는 명령은 무엇인가? apt-cache search tar 패키지를 설치하기 전에 정보와 의존성 문제를 확인하는 명령어에 tar 이라는 명령을 검색하여 알아보는 것이다. - dpkg 명령과 apt-get 명령의 차이점과 중요 옵션을 적용하여 명령어 실습하고 결과를 설명 debian package와 advanced packaging Tool은 우분투 리눅스에서 패키지를 관리하는 명령어지만, dpkg는 패키지들간의 의존성 문제가 있어서 이를 자동으로 해결한 apt-get 명령어를 자주 사용한다. 의존성 문제가 두 명령의 차이점이다. dpkg -install(패키지 설치) dpkg -remove(패키지 삭제) dpkg -purge(패키지와 설정파일까지 전부 삭제..
2021.01.18 23:17 -
[python] 카카오톡 테러(매크로) 프로그램 만들기
아래는 전체코드입니다. import pyautogui import time #pyautogui.screenshot('white.png',region =(1200, 800, 50,30)) #1200,800위치에 50*30크기로 캡쳐 a1= pyautogui.locateCenterOnScreen('white.PNG') pyautogui.moveTo(a1) #화면 캡쳐한 곳 가운데로 이동 pyautogui.click() #한번 클릭 time.sleep(1) #1초 대기 for i in range(500) : pyautogui.write('Hello World!') pyautogui.write(['enter']) 작동원리 대화 입력창을 스크린샷 파일로 저장을 하여 프로그램이 입력하는 공간을 찾게 만들어줌. lo..
2020.12.29 22:13 -
Multi-Agent Reinforcement Learning
MARL(Multi-Agent Reinforcement Learning) - Trying to study Multi-Agent Algorithms in reinforcement learning. - For collaboration or competition, it is a field in which multiple agents interact with each other and find optimal behavior. - In reality, in order for Reinforcement learning to actually apply, the characteristics of various fields must be considered, so multi-agent consideration is ess..
2021.11.23 16:51 -
[Linux] 7
- 셀의 세가지 주요 기능 a) 셀은 키보드와 화면(표준 입출력)을 통해 User와 대화하는 interface 기능을 제공한다. b) 셀은 강력한 프로그래밍 언어의 기능을 지원한다. c) 셀은 각 사용자마다 작업 환경을 원하는대로 맞추어 설정할 수 있는 기능을 제공한다. - 표준 입출력 장치 표준 입력 장치는 키보드로, 셀이 작업할 때에 필요한 정보들을 입력받는 장치이다. 표준 출력 장치는 모니터로, 실행 결과를 출력해주는 장치이고, 표준 오류 장치 또한 모니터로 오류 메시지를 출력하는 장치이다. - '>' 사용 시 기존 파일의 내용을 겹쳐 쓸 수 있다. 방지하기 위한 방법 set명령어를 사용해 noclobber에 option을 - 해준다. -noclobber는 -C와 같다. ex) set -o nocl..
2021.01.18 23:12 -
depthwise separable convolution(깊이별 분리 합성곱)
SeparableConv2D 입력 채널별로 따로따로 공간 방향의 합성곱 수행 후, 1*1 합성곱 (점별 합성곱)으로 출력 채널을 합치는 것. 이로 인해 공간 특성의 학습과 채널 방향 특성의 학습을 분리하는 효과를 얻을 수 있음. 모델 파라미터와 연산의 수를 크게 줄여주어 더 작고 빠른 모델을 제작할 수 있음. 여기서 1 * 1 합성곱이란, 1 * 1 크기의 Convolution Filter 사용한 Convolution Layer를 말하는데, Channel / Spatial의 특성파악에 도움이 된다. 이렇게 1*1 합성곱을 쓰면 파라미터 수가 확연히 줄게 된다. 일반적으로 합성곱에서 channel을 크게 주면 파라미터 수가 급격히 증가하는데, 1*1 합성곱을 사용하면 효율적으로 모델을 구성할 수 있음. 즉..
2021.07.07 14:29 -
Computer Architecture 1
1.3) C와 같은 상위 수준 언어로 작성된 프로그램을 컴퓨터 프로세스가 바로 수행할 수 있는 표현으로 바꾸는 과정을 설명하여라. C와 같은 상위 수준 언어를 작성하고, 이 것을 컴파일러를 통해 어셈블리 언어로 번역한다. 이를 어셈블러가 2진수로 바꾸어주어 컴퓨터 프로세서가 프로그램을 수행할 수 있게 만들어준다. 1.5) 동일한 명령어 집합을 가지고 있는 3개의 다른 프로세서 P1, P2, P3의 클록석도와 CPI는 다음과 같다. a)어느 프로세서의 성능이 가장 좋은가? 초당 명령어 수로 표현하여라. 동일한 명령어 집합을 가졌다고 하였으니 명령어 수가 같다고 볼 수 있다. 초당 명령어 수를 x라하면 각각의 CPU 실행시간은 이렇게 볼 수 있다. P1의 실행시간 = (1.5(CPI) * x) / 3GHz ..
2021.04.02 22:49 -
[TensorFlow] 숫자 인식 AI 제작 (2)
colab.research.google.com/drive/1vcBfl192NDGJ2_c2u01tAa65NGSJmrw8?usp=sharing Google Colaboratory colab.research.google.com 원문입니다. 코랩으로 보는거 추천. (이전글) 2021/01/28 - [Hi/AI] - [TensorFlow] 숫자 인식 AI 제작 (1) # 모델설계 4개의 층으로 만들거임. 입력층, 은닉층, 은닉층, 출력층 입력층 뉴런의 수는 28 * 28이니 784임. 28 * 28개의 픽셀로 이루어진 숫자를 한줄로 바꾼거임. 첫번째 은닉층의 노드 수는 512개, 두번째 은닉층의 노드 수는 256개, 세번째 결과층의 노드수는 10개로 설정함. (마지막은 0~9이니 10개) 활성화 함수는 렐루(Re..
2021.01.30 14:55 -
[TensorFlow] 숫자 인식 AI 제작 (1)
colab.research.google.com/drive/1vcBfl192NDGJ2_c2u01tAa65NGSJmrw8?usp=sharing Google Colaboratory colab.research.google.com 원문입니다. 코랩으로 보는거 추천. %tensorflow_version #텐서플로우 라이브러리 설치되어있는지 확인. import keras 케라스는 텐서플로를 이용하기 더 쉽게만들어주는 도구임. 심층 신경망을 만들기 위한 텐서플로, 테아노, CNTK와 같은 도구를 더욱 쉽게 사용할 수 있게 도와주는 도구임. 따라서 케라스를 사용하려면 먼저 텐서플로 라이브러리를 불러온 상태여야함. from tensorflow.keras.models import Sequential from tensorfl..
2021.01.28 21:19 -
[Linux] 5
- 사용자 계정과 관련된 파일중 암호를 /etc/shadow 파일에 별도로 저장하는 이유 /passwd 파일에 보관을 하게 되면 누구나 읽을 수 있기 때문에 누군가가 암호를 해독하여 사용할 위험이 높아진다. 따라서 보안을 위해 암호는 shadow파일에 별도로 저장하여 root사용자만 읽을 수 있게 한 것이다. - /etc/login.defs 파일의 용도 사용자의 계정과 관련된 기본 값을 정의하고 설정하는 파일이다. 암호에 대해 최대 사용일, 최소 사용일, 만료 경고일, 패스워드 최소 길이를 설정할 수 있고, 사용자와 시스템 계정의 UID와 GID 범위를 지정할 수 있다. 홈 디렉토리를 생성할 것인지, UMASK의 값은 뭐로 할 것인지, 사용자 계정을 삭제할 때 그룹도 삭제할 것인지를 설정할 수 있다. -..
2021.01.13 23:13 -
Text Similarity, Semantic Similarity
텍스트 유사도 코사인 유사도 (Cosine Similarity) -> 두 개의 벡터 값의 Cos 각도 유클리디언 유사도 (Euclidean Similarity) -> 두 개의 점 사이의 거리 = L2 거리 맨하탄 유사도 (Menhattan Similarity) -> 사각 격자 최단 거리 = L1 거리 자카드 유사도 (Jaccard Similarity) -> 교집합과 합집합의 크기로 계산 두 문장이 주어졌을 때, 두 문장이 서로 얼마나 유사한지 나타내주는 기법 아래에서 입력값으로 받는 Sentences는 ["Hello World", "Hello Word"] 형식이다. ### 코사인 유사도 ### def cos_performance(sentences) : tfidf_vectorizer = TfidfVecto..
2022.06.02 18:26 -
Computer Architecture 4
4.1 다음 명령어에 대해서 아래 질문에 답하라. 명령어 : AND Rd, Rn, Rm 뜻 : Reg[Rd] = Reg[Rn] AND Reg[Rm] 4.1.1 이 명령어를 실행하기 위해서 그림 4.10의 제어 유닛이 생성하는 제어신호들의 값은? RegWrite MemRoad ALUMux MemWrite ALUop RegMux Branch 0 0 1(Imm) 1 ADD X 0 ALUMux는 ALU 입력에서 Mux를 제어하는 제어신호. 0(Reg)면 레지스터 파일의 출력을 선택, 1(Imm)은 명령어로부터 즉시 ALU에 대한 두번째 입력을 선택. RegMux는 레지스터 파일에 대한 데이터 입력에서 Mux 제어하는 제어신호. 0(ALU)는 ALU의 출력 선택. 1(Mem)은 메모리의 출력 선택. X는 Don’..
2021.04.02 22:52 -
Computer Architecture 2
2.1 ) 다음 C문장을 위한 LEGv8 어셈블리 코드를 작성하라. C변수 f,g,h는 레지스터 X0, X1, X2에 있다고 가정한다. 최소 개수의 어셈블리 명령어를 사용하라. f = g + ( h - 5 ) ; add f, h, -5 add f, f, g //h와 -5를 더하고 이를 다시 g랑 더한다. 2.3 ) 다음 C문장에 해당하는 LEGv8 어셈블리 코드는? C변수 f, g, h, i, j는 레지스터 X0, X1, X2, X3, X4에 있다고 가정한다. 배열 A와 B의 시작 주소는 레지스터 X6과 X7에 있다고 가정한다. B[8] = A[i - j]; SUB x9, x3, x4 //임의의 x9레지스터에 i-j 를 해줌 LDUR x9, [x6, x9] // A배열이 시작 주소가 x6이고, i-j가 ..
2021.04.02 22:50 -
Learning Rate Scheduler
Learning rate는 backpropagation 과정에서 모델의 weight인 gradient의 변화(업데이트의 보폭 step-size)이다. 역전파 과정에서 모델의 가중치(Weight)는 손실 함수의 오류 추정치를 줄이기 위해 업데이트된다. 학습률 * 추정 가중치 오류(가중치에 대한 기울기 or 전체 오류 변화) >>>> Weight 업데이트 Learning rate는 Optimizer가 Loss function의 최소값에 도달하도록 만드는 변화의 크기를 제어한다. 성능에 영향을 주는 요소인 learning rate를 잘못 설정하면 아예 학습이 안될 수도 있다. 그래서 모델 학습에서는 learning rate를 어떻게 설정할 지가 매우 중요한 요소이다. 학습률이 크면 알고리즘은 빠르게 학습함. ..
2022.05.29 22:23 -
RSI기반 자동매매 프로그램 제작 (업비트)
2021.08.18 - [Hi/Blockchain] - 자동매매봇 제작기 자동매매봇 제작기 예전에 주식도 해보고 코인도 해봤었는데, 정보도 없이 사람의 머리로 생각하고 손으로 거래하다보니 결과적으로 잃는게 더 컸던 것 같다. 이득보면 욕심이 생기고, 손해보면 언젠간 오르겠지 forbetterdays.tistory.com 위의 글 이후로 많은 사람이 관심이 많은 것 같아서 이후에 제작했던 자동매매 봇을 써볼까 합니다. 본문에서 올리는 코드는 하락장이던 상승장이던 조금씩만 이득보자는 의미로 만들었던 코드로 큰 순익을 기대하진 않습니다. 아래는 RSI 기반의 자동매매 프로그램을 돌리면서 찍힌 값들 입니다. 크게 벌거나 잃지는 않지만 꾸준하게 조금씩 수익이 올라옵니다. 안정성을 추구하였습니다. 백테스팅을 진행한..
2021.11.21 00:38 -
[Python] 인스타 크롤링 / 이미지다운
아래는 전체코드입니다. from urllib.request import urlopen from urllib.parse import quote_plus from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.common.keys import Keys import time #import pyautogui baseURL = 'https://www.instagram.com/' plusURL = input('입력 : ') url = baseURL + quote_plus(baseURL) #############################################로그인 driver = webdriver.Chrome(..
2021.01.05 20:52 -
DBLP DataSet Processing / 대용량 Json 파싱
그래프 임베딩을 공부하기 위한 DataSet으로 DBLP로 정하고 이를 가져와보았다. https://www.aminer.org/citation AMiner www.aminer.org 이 곳에 들어가서 이 데이터를 가져와서 다운로드를 받았다. 그런데 문제는 이 데이터를 가져와서 전처리를 해야하는데 용량이 16.1GB 이다.. 웬만한 에디터로 열리지도 않는 데이터를 처리해야해서 막막했었다. 그래서 생각한 것이 데이터를 용량을 정해서 자르고, 자른 코드를 수작업으로 조금만 손봐주자고 생각하였다. 내가 사용한 프로그램은 GSplit 3 이다. 여기서 가져온 DBLP Json파일을 가져와서 1GB씩 먼저 잘랐다. 이렇게 되면, 딕셔너리로 자르는 것이 아닌 용량으로 자르기에 Json 형식이 깨지게 된다. 따라서, ..
2022.01.12 17:58 -
Computer Architecture 3
3.1) 5ED4-07A4의 결과는 무엇인가? 이 두수는 부호없는 16비트 16진수이다. 결과를 16진수로 구하고 계산과정을 보여라. 5ED4(16)을 이진표현으로 바꾸면 0101 1110 1101 0100(2) 이다. 07A4(16)을 이진표현으로 바꾸면 0000 0111 1010 0100(2) 이다. 이 두 수의 차를 연산하면 0101 0111 0011 0000(2)이다. 이를 16진수로 바꾸면 5730(16) 이다. 3.6) 185와 122가 부호없는 8비트 십진 정수라고 가정하라. 185 - 122를 계산하라. 오버플로 또는 언더플로인가? 아니면 둘 다 인가? 십진수 185와 -122를 합하면 63(10)이 나온다. 이는 이진수로 바꾸면 0011 1111이고, 1.11111 * 2^5이므로 오버플..
2021.04.02 22:51 -
[GAN] 적대적 생성 신경망 <숫자생성AI> 제작
숫자 생성 인공지능 원리 생성 신경망 중 GAN을 이용함. GAN (Generative Adversarial Network) 적대적 생성 신경망. 2개의 신경망으로 이루어져 있음. 판별자 신경망과 생성자 신경망. 생성자는 진짜같은 가짜를 생성함. 판별자는 진짜그림과 생성자가 만든 가짜 그림을 구별 가능. 두 신경망은 목표가 있음. 생성자 : 판별자가 자신이 만든 그림을 진짜처럼 생각할 정도의 그림을 그림. 판별자 : 생성자가 만든 그림을 진짜인지 가짜인지 전부 구별해야함. 이제 두 신경망은 서로 이기기 위해 학습을 시작함. 이렇게 두 개의 신경망을 사용하여 이러한 원리로 생성해 내는 기법이 GAN(적대적 생성 신경망)임. 개발 환경 세팅 from keras.models import Model, Seque..
2021.02.21 17:26 -
[논문리뷰]Distributed Representations of Words and Phrases and their Compositionality
Distributed Representations of Words and Phrases and their Compositionality Mikolov, Tomas, et al. "Distributed representations of words and phrases and their compositionality." Advances in neural information processing systems 26 (2013). Abstract (Eng.) The recently introduced continuous Skip-gram model is an efficient method for learning high-quality distributed vector representations that cap..
2022.02.20 21:07 -
JSON
Java Script Object Notation 의 약자이다. json은 단순한 데이터 포멧이다. 데이터를 표시하는 방법일 뿐이다. 속성-값 쌍 / 키-값 쌍 json을 쓰는 이유 json파일이 가지고 있는 데이터를 받아서 객체나 변수에 할당해서 사용하기 위함이다 json의 구조 1. Object(객체) name/value 의 순서쌍으로 set이다. {} 로 정의된다. ex) { "이름" : "홍길동" } 2. Array(배열) ex) [ 10, "array", 32 ] 전체적인 구조 { "이름": "홍길동", → 스트링 "나이": 25, → 숫자 (정수) "특기": ["농구", "도술"], → list 표현 가능 "가족관계": {"아버지": "홍판서", "어머니": "춘섬"}, → array 표현 가..
2022.01.04 20:44 -
[CNN] HeatMap
저장된 CNN 모델을 가져와서 이를 사용해 이미지의 필터를 먼저 시각화 해보았다. 그리고 고양이사진을 하나 가져와서 이를 전처리하여 출력하였다. img_path = './dogs-vs-cats/small/test_dir/test_cats_dir/cat.1700.jpg' from keras.preprocessing import image import numpy as np img = image.load_img(img_path, target_size=(150, 150)) img_tensor = image.img_to_array(img) img_tensor = np.expand_dims(img_tensor, axis=0) # 모델이 훈련될 때 입력에 적용한 전처리 방식을 동일하게 사용합니다 img_tensor ..
2021.06.12 10:32 -
[Linux] 9
- 일반 프로세스와 데몬 프로세스의 차이 일반 프로세스는 컴퓨터에서 연속적으로 실행되는 프로그램으로, 사용자가 커널에 의해 실행을 하면 실행이 되고, 실행이 끝나면 종료되는 프로세스이다. 데몬 프로세스는 리눅스 커널에 의해서 실행되고, 대기상태에 있다가 특정한 서비스를 요청하면 실행해주는 프로세스이다. - 프로세스의 종류와 기능 (데몬, 부모, 자식, 고아, 좀비 프로세스) - 데몬(daemon) 프로세스 리눅스 커널에 의해 실행되고, 대기 상태로 있다 서비스를 요청하면 실행해준다. - 부모(process) 프로세스 자식 프로세스를 만드는 프로세스로, 부모 프로세스를 기반으로 자식 프로세스가 상속된다. - 자식(child) 프로세스 부모 프로세스에 의해 만들어지는 프로세스로 부모 프로세스와 계층적 구조를..
2021.01.18 23:24 -
[Linux] 1
- 소프트웨어의 종류 및 개념 소프트웨어의 종류는 System Software과 응용소프트웨어로 나뉜다. 시스템소프트웨어는 기본적으로 가장 필수적인 소프트웨어로, 컴퓨터를 작동시키고 관리하며, 프로그램을 보다 효율적으로 실행할 수 있는 환경을 제공한다. 응용소프트웨어는 간단히 말하면 운영체제에서 실행되는 대부분의 소프트웨어를 뜻 한다. 어떠한 사용 목적으로 제작된 소프트웨어이다. - 운영체제의 기능 운영체제 즉 Operating System의 기능으로는 메모리, 파일, 데이터, 자원, 프로세스 등을 효율적으로 관리하며, 입출력과 기억장치도 관리한다. 사용자가 요청한 작업들의 중요도를 순서로 따져 효율적으로 작업할 수 있게 관리하는 스케줄링 기능도 있다. - 운영체제의 목적 운영체제의 목적으로는 사용자에게..
2021.01.13 22:48 -
Transformer_Encoder (트랜스포머 인코더 쉽고 자세하게 설명하기)
오늘은 트랜스포머의 인코더 부분을 쉽게 설명하고자함. 많은 사람들이 트랜스포머의 기법에 대해서 물어보면 "Self-attention 기법 사용... 특정 단어에 포커싱.." 혹은 "Q,K,V 사용해서...조합해서 가중치주는 기법..." 정도로만 대답함. 실제 어떤 식으로 돌아가는지 쉽고 자세하게 설명하기 위해 본 포스팅을 진행함. 애매하게 아는 분 환영 트랜스포머의 인코더 레이어는 그림에서 보이다 싶이 크게 3가지로 나눠볼 수 있음. - 멀티헤드 셀프어텐션 - 포지셔닝 와이즈 피드포워드 뉴럴네트워크 - 에디션 앤 레이어 노말리제이션 한글로 쓰니 형편없어 보이긴 하지만 그냥 넘어가겠음. 일단 입력 문장이 모델에 입력되면 > 포지셔닝 인코딩을 통과 > 벡터화(각 단어의 위치정보가 포함)된 입력 문장이 들어옴..
2023.04.28 16:59 -
[Linux] 10
- Telnet 텔넷이란 한 컴퓨터에서 다른 컴퓨터의 서버에 접속하여 작업을 할수 있도록 해주는 것으로, 정보를 제공해주는 서버와 그 서버를 사용하기위한 클라이언트로 이루어져있다. - Telnet 접속 시 문제점과 보안 방법 데이터를 암호화 처리하지 않고 패킷이 그대로 전송되기에 보안에 문제점이 있다. SSH(Secure Shell) 같은 암호화해서 데이터를 전달하는 데이터 전송 원격 접속장치를 사용한다. - OpenSSH OpenSSH란(Secure Shell)은 텔넷의 보안문제를 해결하고 강화해주는 서버이다. 데이터 전송간에 암호화를 하여 보안성이 강화시켜준다. - X윈도우 환경에서 Telnet 서버의 설치 및 운영 방법 a) dpkg -l xinetd, dpkg -l telnet 데몬패키지 리스트 ..
2021.01.21 22:35 -
[Linux] 2
- 리눅스 파티션이란? 주 영역 파티션, 확장 파티션.. 리눅스는 윈도우와 달리 최소 2개 이상의 파티션을 사용한다. 파티션이란 하나의 하드디스크를 논리적으로 여러 개의 파티션이라 불리는 영역으로 나눈 것이다. 물리적으로 메모리가 부족한 상황을 대비해 스왑파티션을 사용한다. 주 영역 파티션은 부팅가능한 파티션으로, 한 개의 하드디스크에 4개의 파티션까지 생성 가능하다. 확장 파티션은 주 파티션에서 1개만 생성이 가능하고, 논리적 파티션으로 다시 나눌 수 있는 파티션이다. 저장공간이 없어 논리파티션을 사용할 때에 사용된다. - 논리 영역 파티션의 개념과 사용 방법 논리 파티션은 확장 파티션에서 생성되는 파티션으로, 12개 까지 생성 가능하다. 가상의 디스크로 사용되면서 데이터 저장이 가능하다. 논리 영역 ..
2021.01.13 22:52 -
[Python] 똥피하기_ 고전게임 제작
pygame을 이용한 똥피하기 게임입니다. 키보드를 이용하여 캐릭터를 움직여서, 설정된 시간 동안 계속해서 떨어지는 똥을 피하는 게임입니다. 이전에 게임을 제작해보고 싶어서 만들어본 최초의 프로젝트였고, 여러가지 pygame 프로젝트 중 처음으로 만든 최초의 프로젝트입니다. 캐릭터의 이미지와 배경은 사진을 가져와 그림판으로 사이즈 조절을 하였습니다. 아래는 전체코드입니다. #하늘에서 떨어지는 똥 피하기 게임 #[조건] #1) 캐릭터는 화면 가장 아래에 위치, 좌우로 이동가능 #2) 똥은 화면 가장 위에서 떨어짐, X좌표는 매번 랜덤으로 설정 #3) 캐릭터가 똥을 피하면 다음 똥이 다시 떨어짐 #4) 캐릭터와 똥이 충돌하면 게임이 종료 #5) FPS는 30으로 고정 #[게임이미지] #배경 : 480* 64..
2021.01.09 16:39 -
[HackerRank] Solve Java
2. Java If-Else import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.regex.*; public class Solution { private static final Scanner scanner = new Scanner(System.in); public static void main(String[] args) { int N = scanner.nextInt(); scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); if (N%2 != 0) {Sys..
2021.01.04 19:43 -
그래서, Docker가 뭔데?
그래서, Docker가 뭔데?여러분이 컴퓨터 프로그램을 만들 때, 그 프로그램이 다른 컴퓨터에서도 잘 돌아가야 해요. 그런데 여러분이 만든 프로그램은 다른 컴퓨터에서 잘 작동하지 않을 수 있어요. 이 문제를 해결하기 위해 도커가 등장했어요! 도커는 어플리케이션을 가상화하는 컨테이너 기술의 한 형태입니다. 이 기술을 사용하면 개발 환경을 일관되게 유지하고, 어플리케이션을 확장하고 배포하는 데 많은 이점을 제공합니다. 첫째, 도커는 환경의 일관성을 보장합니다. 개발자가 동일한 환경에서 어플리케이션을 개발하고 테스트할 수 있도록 도와줍니다. 이는 "내 컴퓨터에서는 잘 됐는데"와 같은 문제를 방지하고 팀 간 협업을 더욱 효율적으로 만들어줍니다. 둘째, 도커는 확장성이 뛰어나며 효율적입니다. 각 어플리케이션은 독..
2024.05.15 22:38 -
Decoding 기법 정리
- Greedy Search - 현재 단어 다음에 나올 단어 후보 중 가장 확률이 높은 것 선택 - (장점) 비교적 간단한 알고리즘 - (단점) 동어 반복 현상 발생 - (단점) 현재 시점 바로 다음 단어만 고려. - Beam Search - 현재시점 이후 여러 step의 단어 조합을 keep 해놓고 해당 확률을 곱하여 점수를 내고 다른 조합과 비교하여 가장 높은 것 선택 - (장점) 뒤에 나올 확률이 높은 단어를 선택하여 좀 더 좋은 문장 생성 - (단점) 연산속도 증가 - (단점) 반복문제 여전히 존재 → n-gram(연속된 단어 개수 허용범위) 사용 - num_beams → Beam Search에 쓰이는 beam의 개수 - no_repeat_ngram_size → 특정 n-gram이 생성문장 내에서..
2024.03.28 11:29 -
간단한 자연어 분석
1. 각 라벨별 가장 많이 나오는 단어 찾기 from collections import Counter import pandas as pd df = pd.read_csv('train.csv') uniqueLabel = df['label'].unique() for Label in uniqueLabel: temp_df = df[df['label'] == Label] words = ' '.join(temp_df['sentence']).split() word_counts = Counter(words) most_common_word = word_counts.most_common(5) print(f"'{Label}'에서 가장 많이 나오는 단어: {most_common_word}") 2. 각 라벨 별 분포도 체크 im..
2024.01.05 09:15 -
Disease Orange Dataset Classification
이전에 만들었던 분류 모델 제작 자료입니다.
2022.05.25 16:15 -
[논문리뷰] Adaptive stock trading strategies with deep reinforcement learning methods
Adaptive stock trading strategies with deep reinforcement learning methods Wu, Xing, et al. "Adaptive stock trading strategies with deep reinforcement learning methods." Information Sciences 538 (2020): 142-158. Highlights - Gated Recurrent Unit is proposed to extract informative features from raw financial data. - Reward function is designed with risk-adjusted ratio for trading strategies for s..
2022.03.04 23:51 -
DQN, A3C
DQN (Deep Q Network) DQN is learning using deep learning neural networks such as CNN. Method of storing samples obtained from each time step, randomly selecting these samples to configure and update them into mini-batches. Existing RL, once it start learning in a bad way, it continue learning in a bad way. The problem is solved by randomly extracting and breaking the correlation between samples...
2021.11.23 16:59 -
Neural Style Transfer
What is NST? Style transfer란, 두 영상(content image & style image)이 주어졌을 때 그 이미지의 주된 형태는 content image와 유사하게 유지하면서 스타일만 우리가 원하는 style image와 유사하게 바꾸는 것을 말함. Style transfer refers to changing only the style to the style image we want while keeping the main form of the image similar to the content image when two images are given. Style Transfer, image-to-image translation, 또는 texture transfer 등으로 불리는..
2021.10.07 15:31 -
자동매매봇 제작기
예전에 주식도 해보고 코인도 해봤었는데, 정보도 없이 사람의 머리로 생각하고 손으로 거래하다보니 결과적으로 잃는게 더 컸던 것 같다. 이득보면 욕심이 생기고, 손해보면 언젠간 오르겠지란 생각으로는 못 벌겠다고 느꼈었고 접었었다. 다시 코인판이 올라오면서 봇을 돌려버리면 내가 설정한 조건 안에서 안전하게 수익을 창출할 수 있지 않을까해서 간단한 자동매매 프로그램을 만들었었고, 백테스팅을 통해 결과를 따져보고 만원으로 테스트기간을 가졌었다. 일단, 주식판은 정보도 많이없고, 이미 여러 알고리즘과 전략, 정보들과 인공지능 모델을 통해 프로그램이 많았기에 생각하지 않았고, 코인한번 해보니 주식보단 코인이 재밌었었다. 코인판은 24시간 돌아가기에 여러 조건 따져서 자동매매 프로그램 돌려버리기에 좋을 것 같다고 생..
2021.08.18 20:10 -
[Kaggle] 간단한 HousePrices 예측해보기
2주 전에 캐글문제 하나 풀고싶어서 주택가격예측 대회에 들어갔다. 들어가서 그냥 평균값으로만 전부 때려박으면 몇점나올까 궁금해서 해봤더니 0.4점나오길래, 1점이 만점이 아닌가 봤더니 0점에 근접할 수록 높은 점수였다. 아 그렇구나 하고 종료했었는데, 원래 하던거 끝난 기념으로 3시간동안 노래들으면서 끄적여봤다. import numpy as np import pandas as pd import os for dirname, _, filenames in os.walk('./house_prices'): for filename in filenames: print(os.path.join(dirname, filename)) train_data = pd.read_csv('./house_prices/train.csv'..
2021.08.13 16:24 -
[BOJ] Queue, DeQue/ 19단계
1 18258 큐 2 성공 7886 26220 30.958% 큐의 개념을 익히고 실습하는 문제. 연산 당 시간 복잡도가 O(1)이어야 한다는 점에 유의하세요. def push(num) : list.append(num) def pop() : if len(list) != 0 : print(list.popleft()) else : print(-1) def size() : print(len(list)) def empty() : if len(list) != 0 : print(0) else : print(1) def front() : if len(list) != 0 : print(list[0]) else : print(-1) def back() : if len(list) != 0 : print(list[-1]) e..
2021.08.08 19:24 -
[BOJ] 정수론 및 조합론 / 17단계
자바로만 풀다가 파이썬 공부할겸 이번 단계에서는 파이썬으로만 풀었습니다. 1 5086 배수와 약수 성공출처다국어분류 7239 10516 70.288% 배수와 약수를 배우는 문제 def test(num01, num02) : if num02 % num01 == 0 : print("factor") elif num01 % num02 == 0: print("multiple") else : print("neither") while True : number01, number02 = map(int, input().split()) if number02 == 0 and number01==0 : break test(number01, number02) 2 1037 약수 성공분류 12488 25527 49.747% 약수의 성질..
2021.05.24 15:19 -
[gym] CartPole-v0
import gym import time env = gym.make('CartPole-v1') #강화학습 환경 불러오기 for i_episode in range(20): # 새로운 에피소드(initial environment)를 불러온다(reset) observation = env.reset() for t in range(100): env.render() #화면에 출력 / 행동 취하기 이전 환경에서 얻은 관찰값(obsevation)적용해서 그림 time.sleep(0.05) # 행동(action)을 취하기 이전에 환경에 대해 얻은 관찰값(observation) print('observation before action:') print(observation) action = env.action_space...
2021.05.17 23:24 -
Artificial Intelligence
optimizer, loss, metrics Optimizer는 학습 진행을 결정하는 방식으로 가중치를 어느 정도로 이동할 것인지를 결정하는 방법이다. Loss Function을 기반으로 네트워크가 어떻게 업데이트될건지 설정하고, 네트워크를 구성하는 알고리즘을 최적화 시킨다. 옵티마이저에는 Adam, RMSprop, SGD 등이 있다. Loss Function은 예측값과 실제값간의 차이를 표현한 수식으로, 학습에 사용되는 오차값인 피드백 신호를 정의하는 함수이며, 훈련을 하는 동안에 최소화가 될 값을 뜻한다. 주어진 문제에 대한 성공지표라고 말한다. 로스에는 binary_crossentropy, categorical_crossentropy 등이 있다. Metrics는 실제 화면상에 출력되는 값을 표현하는..
2021.04.23 14:37 -
[IMDB] Sentiment Analysis AI
# IMDB란 인터넷 영화 데이터베이스(Internet Movie Database, 약칭 IMDB)이다. 우리가 사용할 데이터는 영화 사이트 IMDB의 리뷰 데이터이다. 이 데이터는 리뷰에 대한 텍스트와 해당 리뷰가 긍정인 경우 1, 부정인 경우 0으로 표시한 레이블로 구성된 데이터이다. 이 데이터셋은 케라스에서 import하여 바로 사용할 수 있다. 이 데이터셋을 사용하여 머신러닝을 제작할 것이다. 목적은 텍스트 분류, 그 중에서도 감성 분류를 연습하기위함에 있다. 여기서 감성 분류(Sentiment Analysis)란, 텍스트 안에 들어있는 여러가지 주관적인 정보(의견, 감성, 평가, 태도 등)을 머신러닝을 돌려 분석하는 것이다. #입력 데이터 불러오기 #케라스의 데이터셋에 있는 IMDB를 불러온다...
2021.03.25 23:26 -
[BOJ] 15단계 / Greedy Algorithms
1 11047 동전 0 동전의 조건이 특별해서 동적 프로그래밍보다 빠르게 답을 찾을 수 있는 문제 import java.io.*; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer bd = new StringTokenizer(bfr.readLine()); int T = Integer.parseInt(bd.nextToken()); int money = Integer.parseInt(bd.nextT..
2021.03.14 22:32 -
[RNN] 전염병(covid-19) 예측 인공지능 제작
colab.research.google.com/drive/1925aJnKBtplTrvAv0TfYbdjumcEnAPON?usp=sharing Google Colaboratory colab.research.google.com 코랩으로 작성한 원문입니다. # 개발 시작 이전 며칠간의 확진자 수를 입력받아 다음 날의 확진자 수를 예측하는 방법. 3일 동안의 확진자 수 보고, 그 다음날 확진자 수가 어떻게 될지 학습함. ex) 1, 2, 3 일 차 확진자 -> 4일차 확진자 예측. 연속된 데이터의 형태에서 그 패턴을 찾아냄. 순환 신경망 방식 (RNN). (RNN = Recurrent Neural Network, 순환적 구조, 입출력을 시퀀스 단위로 처리.) from keras.models import Seque..
2021.02.06 20:19 -
[백준] 10단계 문제 모음
10단계. 재귀 재귀함수를 다뤄 봅시다. 1 10872 팩토리얼 재귀함수를 만들어서 제출해야한다. import java.util.Scanner; public class Main { static int factory = 1; public static int fac(int num) { if(num ==0) return factory; else{ factory *= num; return fac(num-1); } } public static void main(String[] args) { Scanner scan = new Scanner(System.in); int x = scan.nextInt(); fac(x); System.out.println(factory); } } 2 10870 피보나치 수 5 이 문제 ..
2021.02.04 21:14 -
[CG]시점변환
키보드를 입력하여 카메라의 시점을 바꾸는 코드입니다. #include static float C_x, C_y, C_z = 2; static int rotateX = 0, rotateX_ = 0, rotateY = 0, rotateY_ = 0, rotateZ = 0, rotateZ_ = 0; void InitLight() { GLfloat mat_diffuse[] = { 0.5, 0.4, 0.3, 1.0 }; //GLfloat는 변수 타입명 설정하는것. GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_ambient[] = { 0.5, 0.4, 0.3, 1.0 }; GLfloat mat_shininess[] = { 15.0 }; GLfloat li..
2021.01.05 21:24 -
[CG] 태양계 모델링
OpenGL로 만든 태양계 모델링입니다. 아래는 전체 코드입니다. #include //#include //#include static int Day = 0, Time = 0; void MyDisplay() { glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glColor3f(1.0, 0.3, 0.3); glutWireSphere(0.2, 20, 16);//태양그리기 glPushMatrix();//태양기준 좌표계 스택에 푸시하여 저장 glRotatef((GLfloat)Day, 0.0, 1.0, 0.0);//회전 glTranslatef(0.7, 0.0, 0.0);//이동 glRotatef((GLfloat)Time, 0.0..
2021.01.05 21:16 -
[python] 백과사전
전체코드는 아래와 같습니다. import urllib.request import urllib.parse from bs4 import BeautifulSoup import os baseURL = 'https://dict.naver.com/search.nhn?dicQuery=' #네이버백과사전링크 while True : inputURL = input('검색할 단어 : ') if inputURL == '그만' : break mixURL = baseURL + urllib.parse.quote_plus(inputURL) #한글로 쓰면 아스키코드로 자동 변환 html = urllib.request.urlopen(mixURL).read() #url링크 가져와서 읽음 soup = BeautifulSoup(html, '..
2020.12.29 20:34 -
Computer Graphics
------------------------- OpenGL로 배우는 컴퓨터그래픽스의 내용을 정리하였습니다. 두 벡터가 수직이면 내적의 값은 0. 외적의 값은 1. 전면 : 법선 벡터가 시점을 향한 면 후면 : 멀어지는 방향 법선벡터 면. 절단 - 물체면 중 가시 부피 내부에 존재하는 면만 걸러내는 작업. (4차원 절단 좌표계에서 일어남) Ø 3차원 정규화 장치 좌표계에서 절단하면 시점 뒤쪽 물체 처리 시 오류 발생해서. 은면제거 - 앞면에 가려서 보이지 않는 부분 제거 후면 - 면이 서있는 방향 때문에 보이지 않는 면. 시점에서 멀어지는 방향의 법선벡터 지닌 면. 절단알고리즘 3개 - 코헨-서더런드 n 물체 좌표를 기준으로 절단한다는 점에서 물체 공간 알고리즘. n 이웃코드에 의해 절단 연산속도 높인 것..
2020.12.07 00:01