범위(scope)
변수를 눈으로 볼 수 있는 범위를 의미함 

어디서 사용할 수 있고 어디서 사용할 수 없는지

지속기간(duration)
메모리를 차지하는 시간 


변수명이 같은 것은 영역(block)에 하나만 있어야 한다. 

이름은 같은데 parameter가 다르면 다른 함수로 취급한다. 


namespace

이름이 같을 경우 namespace를 나누어준다. 
이름으로 충돌하는 것을 방지하기 위해서 


:: 영역 혹은 범위 결정 연산자


cpp17 version부터 

namespace 안에 namespace를 쓸 수 있다. 

namespace work1 ::work11:: work111

{

}

접근

 work1 ::work11:: work111( );

'programming > c++' 카테고리의 다른 글

4.3 using문과 모호성  (0) 2019.04.25
*4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결  (0) 2019.04.23
3.9 비트 플래그, 비트 마스크  (0) 2019.04.22
3.8 비트단위 연산자  (0) 2019.04.22
3.7 이진수  (0) 2019.04.22
Posted by 도이(doi)
,

파일에서 데이터 읽어오기 

일반적으로 csv라는 파일을 사용한다.
numpy에 있는 loadtxt 사용


Slicing

nums = range(5)         //원소들의 리스트를 생성 
print nums                 // 리스트 출력 [0, 1, 2, 3, 4]
print nums[2:4]         // 2이상 4미만 [2, 3]
print nums[2:]           // 2부터 끝까지 [2, 3, 4]
print nums[:]             // 리스트 전체 가져오기 [0, 1, 2, 3, 4]
print nums[:-1]          // 끝에 값 하나 빼고 전부 출력 [0, 1, 2, 3]
nums[2:4] = [8, 9]    // 새로운 값 할당 
print nums                // [0, 1, 8, 9, 4]


numpy tutorial


W(들어오는 값(x), 나가는 값)

배치는 한 번에 처리하는 사진의 개수라고 이해하면 된다. 

배치(batch)

모델 학습의 반복 1회, 즉 경사 업데이트 1회에 사용되는 예의 집합입니다.

배치 크기를 참조하세요.

배치 크기(batch size)

배치 하나에 포함되는 예의 개수입니다. 예를 들어 SGD의 배치 크기는 1이고, 미니 배치의 배치 크기는 일반적으로 10~1,000입니다. 학습 및 추론 중에 배치 크기는 일반적으로 고정되지만, 텐서플로우는 동적 배치 크기를 허용합니다.

Posted by 도이(doi)
,

Linear Regression을 설계하기 위해 필요한 3가지

1. Hypothesis
예측한 값
어떻게 예측할 것인지 

2. Cost Function(loss)
잘했는지 못했는지를 예측하는 방법 
예측한 값과 실제값의 차이를 구함 

3. Gradient descent algorithm 
cost를 최적화 하는 방법 
밥 그릇 같이 생긴 그래프에서 cost의 최저 값을 구함


만약에 비교하고 싶은 대상이 3개일 경우에?

H(x,y,z) = wx + w'y + w''z + b

행렬의 곱셈 (내적)

H(X) = XW

matrix의 속성 
[5, 3] * [? , ?] = [5, 1] 
w는 3*1의 행렬이다. 

ex) 
[n, 3] * [3, 2] = [n, 2] 

matrix를 사용하면 multivariable에 쉽게 처리
instance가 많아도 쉽게 처리 
출력이 여러개여도 쉽게 처리 

이론적으로는 
H(x) = Wx + b 라고 표기하지만, 
실제 사용에 있어서는 
H(X) = XW 가 계산에 용이하기에 
위와 같이 사용한다. 

둘의 수학적 의미는 같다. 

Posted by 도이(doi)
,

게임 아이템 사용 여부 - 비트 플래그 
(옵션이 많을 때 유용하게 사용됨. 메모리, 속도 효율)

const unsigned char opt0 = 1 << 0;
const unsigned char opt1 = 1 << 1;
const unsigned char opt2 = 1 << 2;
const unsigned char opt3 = 1 << 3;

cout << bitset<8>(opt0) << endl;
cout << bitset<8>(opt1) << endl;
cout << bitset<8>(opt2) << endl;
cout << bitset<8>(opt3) << endl;

//아이템을 갖게 되는 이벤트 발생
unsigned char items_flag = 0;
cout << "No Item" << bitset<8>(items_flag) << endl;

//item0 on
items_flag |= opt0;
cout << "Item0 obtained" << bitset<8>(items_flag) << endl;

//item3 on
items_flag |= opt3// |= 비트켜기
cout << "Item3 obtained" << bitset<8>(items_flag) << endl;

//item3 lost
items_flag &= ~opt3; // &=, ~ 비트끄기
cout << "Item3 lost" << bitset<8>(items_flag) << endl;

//has item1 ?
if(items_flag & opt1) {cout <<"has item1' << endl;}
else{ cout << "not have item1" << endl;}

//has item0 ?
if(items_flag & opt0) {cout <<"has item0' << endl;}
else{ cout << "not have item0" << endl;}

<result>

0000 0001
0000 0010
0000 0100
0000 1000

no item 0000 0000
item0 obtained 0000 0001
item3 obtained 0000 1001
item3 lost 0000 0001
not have item1
has item0

색깔 값 추출하기 - 비트 마스크 사용 
(플래그의 비트를 조작하거나 검사할 때 사용)


unsigned int pixel_color = 0xDAA520;

cout << std::bitset<32>(pixel_color) << endl;

unsigned char green = (pixel_color & green_mask) >> 8;
//green값만 추출하기 위해서 오른쪽으로 8칸 미뤄준다. right shift 사용. 

unsigned char blue = pixel_color & blue_mask;

cout << "green" << bitset<8>(green) << " " << int(green) << endl;
cout << "blue" << bitset<8>(blue) << " " << int(blue) << endl;

<result>
0000 0000 1101 1010 1010 0101 0010 0000
green 1010 0101 165
blue 0010 0000 32


'programming > c++' 카테고리의 다른 글

*4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결  (0) 2019.04.23
4.1 지역 변수, 범위, 지속기간  (0) 2019.04.23
3.8 비트단위 연산자  (0) 2019.04.22
3.7 이진수  (0) 2019.04.22
3.6 논리 연산자  (0) 2019.04.22
Posted by 도이(doi)
,