머신러닝,딥러닝/tensorflow

lec08 tensor manipulation(reshape, stack, zip, one_hot ..)

mcdn 2021. 1. 22. 16:55
반응형

tensor manipulation 

1차원 array 

t = np.array([0,1,2,])

 

pp.print(t)

print(t.ndim)

print(t.shape)

 

2차원 array

pp.print(t)

print(t.ndim)

print(t.shape)

 

shape rank axis 

t = tf.constant(1,2,3,4)

tf.shape(t).eval()

rank 1

4

 

t = tf.const 1,2  3, 4

tf.shape(t).eval()

rank 2

2, 2

 

t  = tf.constant ( ~~)

[[[[-> rank : 4 

shape ( ? ? ? ?)

4, 3, 2, 1, 순서대로 채워넣는다

 

axis = 0 가장 바깥 [] 

axis = -1 가장 안쪽 []  or 이 경우 axis = 3 이랑 같음 

 

matrix1 = tfconstant 1 2   3 4 

matrix2 = tf.constant 1  2  

print matrix1. shape (2, 2)  (2,2)

매트릭스 곱 조심하자. 

나온다. 

 

matrix * matrix2 .evl() 다르다. 

broadcasting 주의하라 

shape 이 같으면 잘 더해지는데 

만약 다르더라도 오류 없이 이상하게 계산된다. 

1 2    3 더하면 4 5 가 된다 

 

1 2   3 4 더하면 [] 이 이상한데 4 6 

 

reduce_mean 1 2 

평균 1.5 인데 1 로 준다 

 

1 2   3 4 거의 다 floating인거 주의하자 

axis가 없으면 다 구해서 알려줌 2.5 

axis = 0 으로 평균을 구해라 그러면 2 3 (1 3 // 2 4)

axis = 1 이면 1.5 3.5 

axis = -1 위랑 같다 

 

보통 가장 안쪽 축 계산하고 평균을 내는 것 

argmax

axis = 0 dlaus 1 0 0 

인덱스를 돌려준다!! 가장 큰 것의 위치 

값이 아니라 위치! 

 

reshape 

가장 많이 사용하는 함수 

2 2 3 인 shape을 reshape 다른 방식으로 바꾸고 싶다. 

그러면 

t, shape[-1,3 원하는 shape을 주면 이렇게 

 

 

squeeze expand 도 있다. 

배열들을 한 배열에 넣어주고 

dims 디멘션 추가하고 싶을 때 쓰는 expand 

 

one hot 

자리만 새까맣게 칠하는 원리 000100 이렇게 

one_hot 함수 그대로 사용하면 가능하다. 

 

 

자세히 보시면 하나를 더 배열 넣어주니까 reshape 사용해서 없앨 수도 있다.

 

casting 자료형태 바꿔주는 것 

stack 쌓는 개념 

축에 따라 또 바꿀 수 있다. 

ones and zeros like 

다 1으로 0으로 채워주는 같은 형태 배열 돌려준다. 

 

마지막으로 zip 

복수개의 배열을 한번에 처리하고 싶을 때 

 

 

 

 

 

 

 

 

 

 

 

 

반응형