본문 바로가기

파이썬/머신러닝

[#E14] 머신러닝 팁과 용어 해석

해당 포스트에 나온 모든 상세한 내용은 여기를 참고하세요.


1.reduce_mean


reduce_mean 함수는 주어진 데이터의 함수를 도출합니다. 자료형에 영향을 받으므로 주의해야합니다.


1
2
3
4
5
6
7
8
9
10
11
tf.reduce_mean([12], axis=0).eval()

//output
1

tf.reduce_mean([1.2.], axis=0).eval()

//output
1.5

//t.eval() -> tf.get_default_session().run(t)
cs


위의 코드에서  int 형의 평균은 소수점이 누락되는데 비해  float 형의 평균은 소수점이 포함됩니다. eval()은 작업(세션)을 실행시키는 함수입니다.

 

1.Axis


axis는 축을 의미합니다. 이는 아래의 이미지를 참고하세요.

reduce_mean은 평균을 구하는 함수입니다. axis를 구하는 방법은 주어진 data가 몇차원인지 세는 방법과 같습니다.


즉, 바깥쪽 대괄호부터 순차적으로 axis = 0, axis = 1, axis = 2 ... 입니다.


따라서 평균값은 그림과 같습니다.

 

3.Argmax

 

argmax 함수는 사용자가 임의로 제공한 axis 기준으로 비교해서 더 큰 값의 그 인덱스를 반환합니다.


1
2
3
4
5
6
7
8
//axis = 0
= [[0, 1, 2],
     [2, 1, 0]]
 
tf.argmax(x, axis = 0).eval()
 
//output
array([1, 0, 0])
cs


1
2
3
4
5
6
7
8
//axis = 1
= [[012],
     [210]]
 
tf.argmax(x, axis = 1).eval()
 
//output
array([2, 0])
cs

 

4.Reshape


reshape는 데이터의 구조를 재구성하는 편리한 함수입니다.

 

[5, 2] shape는 데이터셋을 5개로 나누면서, 각 데이터셋에서는 2개의 데이터를 넣겠다는 뜻입니다. 따라서 그림과 같이 reshape됩니다.


5. Reshape (squeeze, expand)


1
2
3
4
5
6
//squeeze
 
tf.squeeze( [ [1], [2], [3], [4], [5] ] ).eval()
 
//output
array( [1, 2, 3, 4, 5] )
cs

 

squeeze 함수는 위와 같이 한 차원을 삭제합니다. 

 

1
2
3
4
5
6
7
8
9
10
11
//expand
                               //axis
tf.expand_dims( [12345] , 0).eval()

//output
array( [ [1, 2, 3, 4, 5] ] )
 
tf.expand_dims( [12345] , 1).eval()

//output
array( [ [1], [2], [3], [4], [5] ] )
cs

 

expand 함수는 사용자가 설정한 axis를 기준으로 한 차원을 추가합니다.

 

6. ones and zeros like

 

해당 함수는 주어진 사용자의 데이터의 구조와 같은, 각각 1과 0으로 채운 새로운 데이터를 반환합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//my data
x_data = [[210],
          [012]]
 
//new ones like data
tf.ones_like(x_data).eval()
 
//output
[111],
[111]] 
 
//new zeros like data
tf.zeros_like(x_data).eval()
 
//output
[000],
[000]] 
cs

 

6. Broadcast


broadcast는 기존의 매트릭스 곱 (행렬 곱)에서 shape 구조가 맞지 않을 때도 자동으로 맞추어 계산합니다. 이는 강력한 기능이지만, 원하지 않는 결과를 출력할 수 있습니다.