AI(DeepLearning)
tensorflow 강좌3. 데이터처리
크레이지제이
2018. 7. 18. 10:06
반응형
+ 자료 처리 및 많이 사용하는 함수들...
-Shape, Rank, Axis
t=tf.constant( [1,2,3,4])
tf.shape(t).eval()
tensor의 shape과 타입을 알수 있다. Rank는 처음에 [의 개수로 볼 수 있음.
array ( [4], dtype=int32 )
t=tf.constant( [[1,2], [3,4] ])
tf.shape(t).eval()
array ( [2,2], dtype=int32 )
축에도 번호를 매길수 있는데, 가장큰 범위부터 0으로 매김.
2차원배열의 경우 0은 행방향, 1은 열 방향.
-Matrix 곱
tf.matmul( matrix1, matrix2) ; Matrix 곱; 내적
matrix1*matrix2 ; 성분곱.
( *과 matmul은 다름. 주의!)
;Broadcasting 알아서 형을 변환하여 연산해 줌. (편하지만 주의할 필요가 있음)
-reduce_sum( input_tensor, axis=None)
axis가 없으면 총합. 축은 큰 범위에서부터 인덱스가 0임.
입력이 1차원이면 축은 의미없음. axis=0이 됨.
입력이 2차원이면
axis=0 세로방향으로 합. (테이블 input이 있으면, 아래에 답을 쓴 것)
axis=1 가로방향으로 합. (테이블 input에서 오른쪽에 답을 단 것)
axis=-1 이면 가장 마지막 축. 2차원에서는 1이됨. 3차원에서는 2가 됨.
axis가 없으면 성분들 총합.
-reduce_mean( tensor, axis )
평균
tf.reduce_mean(x, axis=0)
-argmax ; 최대값의 인덱스
tf.argmax(x, axis=1)
-reshape ; 텐서 재구성
t=np.array( [[[0,1,2], [3,4,5]], [[6,7,8],[9,10,11]] ] )
tf.reshape(t, shape=[-1,3]) ; -1은 알아서 다른 성분크기에 맞게 자동조정.
[[0,1,2], [3,4,5], [6,7,8], [9,10,11]]
비슷한 함수. squeeze, expand
-onehot encoding
t=tf.one_hot( [[0], [1], [2], [0]], depth=3)
[ [[1, 0, 0]] , [[0,1,0]], [[0,0,1]], [[1,0,0]] ] #주의 rank가 올라감!!!
원래의 차수로 내리려면
tf.reshape ( t, [-1, 3] )
[ [1,0,0], [0,1,0], [0,0,1], [1,0,0] ]
-타입 캐스팅
tf.cast( [1.8, 2.2], tf.int32)
tf.cast( [True, False, 1==1, 1==0], tf.int32 )
[1, 0, 1, 0]
-스택
x=[1,2], y=[3,4], z=[5,6]
np.stack( [x,y,z] )
=> [[1,2], [3,4], [5,6]]
np.stack( [x,y,z], axis=1)
=> [[1, 3, 5], [2,4,6]]
-ones and zeros like
tf.ones_like(x).eval() # .eval()은 값과 타입을 출력해준다.
x의 shape과 같은데 값을 모두 1로 채움.
tf.zeros_like(x)
-Zip ; 묶어준다.
for x, y, z in zip( [1,2,3], [4,5,6], [7,8,9] ):
print (x, y, z)
1 4 7
2 5 8
3 6 9
zip을 하지 않고 출력하면?
for x, y, z in ( [1,2,3], [4,5,6], [7,8,9] ): # 또는 [[1,2,3],[4,5,6],[7,8,9]]
print (x, y, z)
1 2 3
4 5 6
7 8 9