본문 바로가기

분류 전체보기640

[이전 논문] GAN GAN의 구조 간단하게 설명하자면, Generator는 랜덤 노이즈 z를 입력 받아서 이미지를 생성하고, Deiscriminater는 가짜 이미지(G가 생성한 이미지)와 진짜 이미지를 랜덤으로 입력 받아서 진짜인지 가짜인지 구분한다. 진짜 이미지라면 1에 가까운 값을 가짜 이미지라면 0에 가까운 값을 출력한다. 여기서 헷갈리면 안되는 점은 X는 이미지 한개가 아니라 여러 이미지가 있는 이미지 데이터 셋이다. 따라서, 생성자는 실제 이미지 하나에 대해 특징을 학습하는 것이 아니라 이미지 데이터 셋 전체의 이미지들의 특징을 파악한다.  1. 초기 생성 과정이미지에서 보이듯이 상단의 노이즈 벡터가 생성기(G)의 입력으로 들어갑니다생성기는 이 랜덤 노이즈를 기반으로 초기 이미지를 생성합니다2. 학습 과정이미지의.. 2024. 11. 12.
11-9장 typedef typedef란?: 기존에 존재하던 자료형을 새롭게 정의할 때 사용한다.typedef를 사용하는 목적은 가독성 때문이다.    위처럼 이전에 정의되어 있던 자료형을 새로운 자료형으로 정의할 수 있다.    [typedef struct - 사용 예시]#include typedef struct point { int x; int y;} POINT;int main() { POINT p1 = { 1, 2 }; printf("p1.x: %d p1.y: %d", p1.x, p1.y); // p1.x: 1 p1.y: 2}   [typedef 무명 struct - 사용 예시]#include typedef struct { int x; int y;} POINT;int main() { .. 2024. 11. 12.
11-8장 열거형 열거형이란?: 정의된 값들만 가질 수 있는 자료형을 만드는 것과 같다. 예를 들어 int는 정수만 받을 수 있고, double을 실수만 받을 수 있는 것처럼말이다. 열거형을 만드는 이유는 가독성을 위해서이다.   #include enum days { MON, TUE, WED, THU, FRI, SAT, SUN };// 포인터들의 배열을 만들고 문자열 상수로 초기화한다. const char* days_name[] = { "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" };int main(void){ enum days d; // enum days로 타입 캐스팅한 d를 1씩 증가 시키면.. 2024. 11. 12.
11-7장 공용체 공용체란?: 같은 메모리 영역을 여러 개의 변수가 공유해서 사용하는 것이다. 즉, int i가 특정 메모리 영역을 사용하면 char c는 해당 영역을 사용할 수 없다. union example { char c; // 같은 기억 공간 공유 int i; // 같은 기억 공간 공유};    #include union example { int i; char c;};int main(void){ union example data; data.c = 'A'; printf("data.c:%c data.i:%i\n", data.c, data.i); data.i = 10000; printf("data.c:%c data.i:%i\n", data.c, data.i); .. 2024. 11. 12.
11-6장 구조체와 포인터 구조체와 포인터: 구조체를 만들고 구조체 포인터 변수를 만들어 구조체의 주소를 할당해주면 구조체처럼 사용할 수 있다. #include #include struct student { int number; char name[10]; double grade;};int main(){ struct student s1 = { 24, "Kim", 4.3 }; struct student* p; p = &s; printf("학번=%d 이름=%s 학점=%f \n", s.number, s.name, s.grade); // 학번=24 이름=Kim 학점=4.3 printf("학번=%d 이름=%s 학점=%f \n", (*p).number, (*p).name, (*p).grade);.. 2024. 11. 11.
11-5장 const struct const를 구조체에 사용하는 이유데이터 보호, 가독성, 최적화, 메모리 절약 등 여러 면에서 유용특히 큰 데이터 구조를 전달할 때는 const 포인터가 복사 비용을 줄여 주므로, 메모리 절약 측면에서 유리할 수 있다. 따라서, 값에 의한 호출과 동일한 효과를 내지만 포인터와 const를 사용하는 이유는 값에 의한 호출로 큰 데이터 구조를 전달하면 많은 메모리를 잡아 먹기 때문에 const와 포인터를 사용해서 주소를 전달하지만 원본의 값은 변경하지 못하게 하는 효과를 낼 수 있다. 이렇게 하면 메모리를 절약할 수 있다.  [const struct 사용 예시]#include #include struct student { int number; char name[10]; double grade.. 2024. 11. 11.
11-4장 구조체와 함수 구조체와 함수구조체를 함수의 인자나 값으로 사용할 수 있는데, 이때는 "값에 의한 호출"이 원칙이다.   [값에 의한 호출 예시]#include #include int equal(struct student s1, struct student s2){ if (strcmp(s1.name, s2.name) == 0) return 1; else return 0;}struct student { int number; char name[10]; double grade;};int main(){ struct student s1 = { 25, "Mun", 3.92 }; struct student s2 = { 26, "KiM", 3.76 }; printf("%d".. 2024. 11. 11.
11-3장 구조체 배열 구조체 배열: 여러개의 구조체를 하나의 구조체로 만들 수 있다. 배열이기 때문에 인덱싱이 가능하다.struct student { int number; char name[20]; double grade;};int main(){ struct student list[100];// 구조체 배열 선언}   구조체 배열의 초기화2차원 배열처럼 선언하면 구조체 배열을 초기화 할 수 있다. struct student { int number; char name[10]; double grade;};int main(){ struct student list[3] = { { 25, "Mun", 3.92 }, { 24, "Kim".. 2024. 11. 11.
11-2장 구조체 변수의 대입과 비교 구조체 변수의 대입(=)은 가능하다!#include struct point { int x; int y;};int main() { struct point p1 = { 10, 20 }; struct point p2 = { 30, 40 }; P1 = P2;}  구조체 변수의 비교(==)는 불가능하다! #include struct point { int x; int y;};int main() { struct point p1 = { 10, 20 }; struct point p2 = { 30, 40 }; if (p1 == p2) // 컴파일 오류 { printf("p1와 p2이 같습니다."); }}  다만, 멤버끼리 비교를 통해서 결과를 도.. 2024. 11. 11.
11-1장 구조체 구조체의 선언 struct student { //구조체 정의 int number; char name[10]; double grade;};int main(void){ struct student s1; //구조체 변수 선언}   구조체의 초기화struct student { int number; char name[10]; double grade;};int main(){ struct student s1 = { 24, "Kim", 4.3 }; // (1) 구조체 기본 초기화 struct student s2 = s1; // (2) 이미 초기호된 구조체를 할당받아서 초기화}   구조체 멤버 참조위의 방식처럼 한번에 초기화하는 방법도 있지만 메모 참조(.)를 이용해서 초기화하는 것.. 2024. 11. 11.
7.4 Design of control unit / Fuction Field Fuction Field - F1, F2, F3 설계하기  왼쪽 표를 보고 오른쪽 논리 회로를 살펴보면 된다. 예를 들어, ADD는 F1에서 0 0 1이기 때문에 F1 Decoder에서는 0 0 1이 입력으로 들어오면 ADD 연산을 내보낸다. AND는 F2에서 0 1 1이기 때문에 F2 Decoder에서는 0 1 1이 입력으로 들어간다. 다른 부분들도 마찬가지로 디코더를 통해서 제어를 할 수 있다.    control unit 설계하기 ⭐️⭐️⭐️  빨간 박스 내부의 Control Unit을 설계해보자. 2024. 11. 9.
7.3 Micro-program example 7장에서 다루는 컴퓨터 구조AR(LD)Mux를 통해서 PC의 값이 전달 될지, DR의 값이 전달 될지 결정된다. PC(LD)Mux를 통해서 PC의 값이 전달 될지, 메모리 값이 전달될지, AC의 값이 전달 될지 결정된다.   Control memory: micro program들이 저장되는 메모리CARControl memory의 주소가 들어가는 레지스터 SBRreturn address가 저장되는 레지스터   명령어의 format - Memory에 적재되는 명령어(16bit) Opcode로 Control Memory의 주소로 변환하는 과정인 mapping을 각 Opcode에 하면 아래와 같다. ADD인 0 0 0 0 ➡️ 0 0 0 0 0 0 0BRANCH인 0 0 0 1 ➡️ 0 0 0 0 1 0 0ST.. 2024. 11. 9.
7.2 Address sequencing - Mapping 중점 Address sequencing: Control Memory에 있는 여러 Micro Instrction(명령어)들 중에서  어떤 Micro Instrction(명령어)을 수행하는지를 결정하는 것  명령어를 실행하기 위한 절차 1. Instruction fetch routine(명령어 가져오기)명령어를 가져오는 과정 2. Effective address 결정명령어의 실제 메모리 주소를 결정하는 과정 3. Fetched instruction(가져온 명령어 실행)가져온 명령어에 대한 구체적인 실행을 수행한 후, 다시 명령어 가져오기 루틴으로 제어가 반환  Address sequencing하는 4가지의 방법    나머지는 다른 장에서 설명하고 우선 Mapping을 이용한 방법에 대해서 살펴보자 MappingI.. 2024. 11. 9.
7.1 Control memory 5장에서는 하드웨어적(회로)으로 구현된 부분이라면 7장에서는 소프트웨어적(프로그램)으로 구현된 부분이다.  5장에서는 메모리의 프로그램 영역에 명령어들이 모여 하나의 프로그램을 이루었다. 이와 다르게 7장에서는 Control memory 내부에 micro program에 의해서 명령어가 수행되는 것이 Micro Computer라고 한다.  용어 Control Memory: Micro Program들이 저장되어 있는 메모리Micro Program: 제어 단어(Control word)를 출력하는 프로그램Control Word: 특정 클럭 신호에서 수행될 마이크로 연산들의 조합Control Variable: Control Word의 각각을 의미하며, 특정 마이크로 연산을 수행할지를 결정하는 변수Micro-In.. 2024. 11. 9.
2024.11.07 Q&A 1. 색상 왜곡에서 PCA(주성분 분석)를 사용한 방법 우선, PCA는 중요한 축을 찾는 것이다. 이 중요한 축(PCA 1st)은 축의 방향으로 데이터가 넓게 퍼져있다는 것이다. 그 축을 기준으로 데이터가 다양한 특징을 가지고 있다는 것이다. 그리고 다음 축(PCA 2nd)은 PCA 1st를 직교하는 축이 된다. 이제 PCA를 이용한 색상 왜곡을 해보자. PCA를 이용한 색상 왜곡에서 중요한 핵심은 RGB 각각의 색상을 독립적인 특징으로 보고, 이들 간의 상관관계를 통해 새로운 축을 정의하는 것이다. 1. 색상의 특징 찾기R, G, B를 각각 별개의 특징으로 보고, 이 세가지 색상이 어떻게 함께 변하는지 살펴보면서 서로 어떻게 영향을 주는지 보면서 색상의 중요한 변화를 알아낸다. 2. 가장 중요한 변화 .. 2024. 11. 9.
2024.11.07 - ch5관련 문제(기말고사 다수 출제 예정 특히, 1번 2번) 1. 기본 컴퓨터에서 AC에는 16진수로 ABCD가 들어 있고, 초기에 PC의 값은031이며, E는 1이다. 다음의 명령어가 수행된 후 AC, E, PC, AR, IR 각각의 내용은 무엇인가?(a) CLA, (b) CMA   오른쪽 위 표는 T에 따라 진행되는 타이밍도를 그린것이다. T₀에서는 PC(명령어 주소)를 AR(유효 주소)에 저장한다. T₁에서는 메모리에서 유효주소에 있는 명령어를 IR(명령어 저장 레지스터)에 저장 + 현재 PC(명령어 주소)를 다음 PC(명령어 주소)로 변경한다. T₂에서는 IR에 저장된 명령어를 기준으로 최상위 bit에 있는 값을 I에 저장하고 0에서 11번째 bit의 값을 AR에 저장한다.T₃에서는 메모리의 피연산자 주소가 있는 곳의 값을 AR에 저장한다. (간접 주소 지.. 2024. 11. 7.
.dt를 사용하는 이유 우선 dt의 사용이유를 알기 전에 to_datetime()의 입력 데이터 형태에 따라 반환되는 타입이 뭔지 알아야 한다. 그리고 그 반환 타입에 따라 .dt 사용여부를 확인해보자. to_datetime() - 입력데이터 타입에 따른 반환 타입1. 단일 String 입력반환 타입: Timestamp[코드]date = pd.to_datetime('2023-01-01')print(type(date)) #  .dt 사용 안함!   2. list 또는 array 입력반환 타입: DatetimeIndex[코드]dates = pd.to_datetime(['2023-01-01', '2023-02-01', '2023-03-01'])print(type(dates)) #  .dt 사용 안함!   3. series / d.. 2024. 11. 7.
10주차 - 실습 str 속성을 이용해서 address에서 도시와 구를 추출했다. 도시는 앞에서 2글자만 추출해서 뒤에 시를 붙였다. 구는 split()을 통해서 각 행의 첫번째 요소를 구로 설정했다.        1. 우선 date열의 타입을 to_datetime를 활용해서 datetime 타입으로 변경한다. 2. 명시적 인덱싱을 이용하기 위해서 타입을 변경한 date 열을 인덱스로 설정한다. 3. 1번은 슬라이싱, 2번은 인덱싱을 했다. 4. 중요한건 3번과 4번인데 timestamp(시점)를 만들고 timedelta(특정 기간)을 만들어서 더해준다. 특정 기간은 Hour기준, Day 기준, Week 기준, Year 기준 등을 토대로 만들수 있다.      이 부분은 .dt.strftime(지시자) 형식으로 컬럼을 생.. 2024. 11. 7.
이미지 올리기 app - res - drawble에 복사 붙여넣기 후 팝업창 ok 2024. 11. 6.
dp와 sp의 차이 Jetpack Compose에서 dp와 sp는 화면 요소의 크기를 정의할 때 사용하는 단위이지만, 각기 다른 목적을 가지고 있음.  dp (Density-independent Pixels)dp는 "밀도 독립적 픽셀"을 의미함. 기기의 화면 밀도에 따라 크기가 조정되어 다양한 화면 크기와 해상도에서 일관된 크기를 유지하도록 돕는 단위임. 일반적으로 버튼, 여백, 높이, 너비 등 레이아웃의 크기를 지정할 때 사용됨. sp (Scale-independent Pixels)sp는 "스케일 독립적 픽셀"을 의미하며, 주로 텍스트 크기를 정의할 때 사용됨. sp는 dp와 유사하게 밀도에 따라 조정되지만, 사용자가 설정한 글꼴 크기에 따라 추가 조정이 됨. 따라서 접근성 측면에서 글꼴 크기를 키우거나 줄이는 설정을 지.. 2024. 11. 6.
Modifier 1. Modifier: Compoent(예를 들면 Row, Column, Box, Text, Button, Image 등등)의 모양이나 동작을 설정한다. Modifier의 역할레이아웃 조정: Modifier는 Composable의 크기, 여백, 패딩을 설정할 수 있다.그래픽 효과: 배경색 설정, 그림자 추가 등 그래픽 효과를 추가할 수 있다.이벤트 처리: 클릭이나 드래그 등의 사용자 입력 이벤트를 처리할 수 있다.애니메이션 효과: 애니메이션 효과를 적용하거나 특정 동작에 애니메이션을 추가할 수 있다. 2. padding: padding의 속성에서는 start(왼), end(오), top(위), bottom(아래), horizontal(좌우), vertical(상하)이 있다.3. then(): 하나의 UI.. 2024. 11. 6.
값 전달과 상태 호이스팅의 차이 값 전달과 상태 호이스팅(State Hoisting)은 컴포넌트 간의 상태 관리를 다루는 두 가지 방식입니다. 두 개념은 비슷해 보일 수 있지만, 실제로는 상태 변경 권한을 누가 가지느냐에 큰 차이가 있습니다. 하나씩 설명하겠습니다.1. 값 전달 (Value Passing)값 전달은 단순히 상위 컴포넌트에서 값만 자식 컴포넌트로 전달하는 방식입니다.이 방식에서는 자식 컴포넌트가 전달받은 값을 변경할 권한이 없으며, 전달받은 값은 읽기 전용으로 사용됩니다.값 전달은 자식 컴포넌트가 상태를 변경할 필요가 없고, 상위 컴포넌트에서 일방적으로 값만 표시하고자 할 때 유용합니다.예시@Composablefun ParentComponent() { val message = "Hello, Compose!" C.. 2024. 11. 6.
Arrangement와 Alignment 1. Arrangement: Arrangment는 중심축을 의미한다. 즉, Row(Column)내부에 있는 Component를 중심축 기준으로 정렬한다.Row의 중심축은 가로축 이므로 horizontalArrangement Column의 중심축은 세로축 이므로 verticalArrangement  [Row에서의 Arragement. 즉, horizontalArrangement]    [Column에서의 Arragement. 즉, verticalArrangement]     2. Alignment: Alignment는 중심축의 반대축을 의미한다. 즉, Row(Column)내부에 있는 Component를 중심축의 반대축 기준으로 정렬한다.  기본적으로 verticalAlignment의 기본값은 위쪽 정렬이고.. 2024. 11. 6.
state hoisting - slider를 통한 폰트 조절 앱 만들기 state hoisting 이란?기본적으로 State는 개별 Component에서 유지된다. 그러나 다른 Componet(예를 들면 자식 Component)에서도 같은 State 값이 필요하다면, 해당 State를 상위(부모) Component에서 공유할 수 있고, 상태의 일관성을 유지할 수 있다. 쉽게 말해서, 상위 Component에서 하위 Component에게 값을 전달하고 하위 Component에서 값을 변경하면 상위 Component에서도 값 변경이 일어나고, 화면 렌더링도 일어난다. 따라서, 변경된 값이 자동으로 적용된다.  해결 방법 1: MutableState으로 상태를 전달: 상태 객체를 직접 전달해서, 자식 Componet가 부모 Componet의 state를 직접 접근하고 관리할 수 .. 2024. 11. 5.
state란? - counter button 만들기 1. state란?state는 UI요소의 현재 상태를 나타내는 데이터이다. 일반적으로 state는 UI요소의 일시적인 상태를 저장하는 데 사용되며, 상태가 변경되면 해당 상태에 의존하는 UI가 자동으로 재구성된다. state를 선언하는 방식에는 총 2가지 방식이 있다. 1. MutableState 변수 방식: MutableState는 값이 변경될 수 있는 상태를 나타내며, mutableStateOf를 사용하여 상태를 초기화할 수 있다. 이 방식은 MutableState 객체를 직접 참조하므로 .value 속성을 통해 값을 읽고 쓰게 된다.val count: MutableState = remember { mutableStateOf(0) } 2. by위임 속성을 이용한 간단한 선언 방식by 위임 속성을 이용.. 2024. 11. 5.
[pandas] 고성능 Pandas: Eval & Query 넘파이와 판다스는 기본적으로 Vectorized를 지원하기 때문에 빠른 연산을 지원한다. 다만, 위의 사진과 같은 복합적인 연산이 존재하는 경우, 실제 동작은 연산 하나하나를 메모리에 할당한 후에 저장을 한다. 따라서, x와 y의 크기가 큰 경우 메모리를 많이 차치하여 오히려 연산이 더 느려질 수 있다. ❓그럼 어떻게 해야할까?연산을 한 번에 해주는 것이 아니라 부분적으로 나눠서 해줘야한다. 따라서 넘파이와 판다스에서는 큰 데이터에서도 효율적인 연산이 가능하도록 eval, query 함수를 제공한다. 1. eval 메소드의 사용[pandas.eval(문자열)형태로 사용]: 실행하고 싶은 연산을 문자열로 표현해서 사용할 수 있다. 결과 = pd.eval('연산') 이렇게 eval 메소드를 이용해도 동일한 .. 2024. 11. 5.
[pandas] 날짜 / 시간 데이터 다루기(Time stamp, Time interval, Time duration) ❓ 날짜/시간과 관련된 자료형이란?: 절대적인 시간(2024년 11월 2일 등)을 다룰 수 있는 자료형이다. 내부적인 동작에는 실수 혹은 정수형으로 동작한다 . 판다스에서 날짜/시간과 관련된 자료형에는 3가지가 있다.  1. Time stamp: 특정 시점(시각)을 나타낸다. 예를 들면 2024년 11월 2일 11시 32분 23초를 나타는 것과 같다. 2. Time interval(period): 시작과 종료 시점 사이의 구간을 나타낸다. 예를 들면 2015년(2015년 1월 1일 ~ 2015년 12월 31일까지), 2021년 8월 첫째 주(2021년 8월 1일  ~ 2021년 8월 7일)를 나타내는 것과 같다. 3. Time delta(duration): 두 시간 간격의 차이를 나타내며, 일정한 시간의.. 2024. 11. 5.
[pandas] 문자열 Vectorized 연산 기본적으로 Numpy와 pandas에서는 아래와 같은 Vectorized 연산을 지원한다. 이러한 Vectorized 연산을 문자열(String)에서도 적용하기 위해 str 속성을 지원하게된다. str 속성을 이용해서 Vectorized 연산을 하면 None, Null에 대한 경우도 오류를 발생시키지 않고 무시하고 처리하게 된다.    str에서는 아래와 같은 모든 Python 문자열 내장 메소드를 동일하게 지원한다.   1. "str" 속성을 이용한 문자열의 Vectorized 연산   2. 인덱싱monte.str.split()[0]  이렇게 스플릿을 한 것에서 인덱싱을 하면 columns에서 인덱스가 0인 것이 아니오는 것이 아니라 row에서 인덱스가 0인 것이 나오게 된다.    monte.str... 2024. 11. 5.
10-7장 문자(열) 처리 라이브러리(암기는 필요 없으나, 뭐하는 함수인지는 알아야함) 문자 처리 라이브러리 함수  #include ctype.h>함수설명isalpha(c)c가 영문자인가?(a-z, A-Z)isupper(c)c가 대문자인가?(A-Z)islower(c)c가 소문자인가?(a-z)isdigit(c)c가 숫자인가?(0-9)isalnum(c)c가 영문자이나 숫자인가?(a-z, A-Z, 0-9)isxdigit(c)c가 16진수의 숫자인가?(0-9, A-F, a-f)isspace(c)c가 공백문자인가?(‘ ’, ‘\n', '\t', '\v', '\r')ispunct(c)c가 구두점 문자인가?isprint(c)C가 출력가능한 문자인가?iscntrl(c)c가 제어 문자인가?isascii(c)c가 아스키 코드인가?toupper(c)c를 대문자로 바꾼다.tolower(c)c를 소문자로 바꾼다... 2024. 11. 5.
10-6장 문자열의 배열 문자열의 배열을 이용해서 각 문자열의 문자들은 행이 되고, 문자열 들의 개수는 열이된다. char 문자열 명[문자열 개수][문자열 중 최대 문자의 길이 + 1] = { "" , "" , "", ... }char s[3][6] = { "init", "open", "close"};    반복문을 통해서 문자열의 배열(2차원 배열) 출력하기#include int main() { int i, j; char menu[5][10] = { "init", "open", "close", "read", "write" }; for (i = 0; i    이렇게 각 행의 길이를 매번 최대 길이 + 1을 계산해서 정해주기란 불편하다. 따라서 C에서는 각 행의 길.. 2024. 11. 5.