정구리의 우주정복

[tensorflow] 여러가지 자료형과 행렬 초기화 , 행렬의 연산 본문

PYTHON/A.I

[tensorflow] 여러가지 자료형과 행렬 초기화 , 행렬의 연산

Jungry_ 2020. 9. 22. 22:55
반응형

1. 여러가지 자료형

import tensorflow as tf

#여러가지 자료형
string = tf.Variable('This is String',tf.string) #문자열
number = tf.Variable(324,tf.int16) #정수 , 숫자가 하나만 있으니까 스칼라 ,2차원 벡터
floating = tf.Variable(3.567,tf.float64)

rank1_tensor = tf.Variable(['Test'],tf.string) #rank1
rank2_tensor = tf.Variable([['Test','ok'],['Test','Yes']]) #rank2
#공식 문서에도 있음

변수를 선언할때는 Variable ,상수를 선언할때는 constant 를 써야한다

자료형에는 string , int , float 등등이 있고 선언 방법은 위에처럼 쓰면 된다

 

2. 행렬의 초기화

#행렬 (shape 과 data type 이 같아야 계산 가능)
#tensorflow 는 사칙연산을 제공하지만 배열의 크기와 shape 가 같아야 연산 가능
a = tf.zeros([2,10]) #2행 10열 을 0 으로 초기화
print(a)
b = tf.ones([2,10]) #2행 10열 을 1f 로 초기화
print(b)
c = tf.eye(3) #3x3 대각행렬
print(c)

텐서플로의 주요 계산은 행렬로 이루어 진다 ! 행렬을 초기화 하는 방법이다 

>>tf.Tensor( [[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]], shape=(2, 10), dtype=float32)

tf.Tensor( [[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]], shape=(2, 10), dtype=float32)

tf.Tensor( [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]], shape=(3, 3), dtype=float32)

 

3. reduce 함수를 통해 행렬의 합 , 평균 , 최대 , 최소 구하기

#reduce 함수를 통해 행렬의 합 , 평균 , 최대 , 최소 구하기
d = tf.constant([1,2,3,4,5,6,7,8,9,10])
print(tf.reduce_sum(d))
print(tf.reduce_mean(d))
print(tf.reduce_max(d))
print(tf.reduce_min(d))
e = d+5 #브로드캐스팅 (배열 크기랑 셰입이 다를때 연산)
print(e)

>>tf.Tensor(55, shape=(), dtype=int32)

tf.Tensor(5, shape=(), dtype=int32)

tf.Tensor(10, shape=(), dtype=int32)

tf.Tensor(1, shape=(), dtype=int32)

tf.Tensor([ 6 7 8 9 10 11 12 13 14 15], shape=(10,), dtype=int32)

 

4. 행렬의 곱 , 합과 차

#행렬의 곱(첫번째의 열과 두번째의 행이 같아야함)
f=tf.constant([[1,2,3],[4,5,6]])
g=tf.constant([[10,11],[20,21],[30,31]])
h = tf.matmul(f,g)
print(h)
#합과 차는 차원이 같아야지 가능
i=tf.constant([[1,2,3]])
j = tf.constant([[10],[20],[30]])
print(tf.add(i,j))
print(tf.subtract(i,j))

>>tf.Tensor( [[140 146] [320 335]], shape=(2, 2), dtype=int32)

tf.Tensor( [[11 12 13] [21 22 23] [31 32 33]], shape=(3, 3), dtype=int32)

tf.Tensor( [[ -9 -8 -7] [-19 -18 -17] [-29 -28 -27]], shape=(3, 3), dtype=int32)

 

행렬의 곱을 어떻게 하는지 , 최소 조건이 무엇인지 꼭꼭꼭꼭 알아두자 !!! (넘 헷갈림)

 

5. 행렬의 형태를 바꿔주는 reshape

#행렬의 형태를 바꿔주는 reshape
k = tf.reshape(f,[3,2]) #2,3 인걸 3,2 로 바꿔줌
print(k)
print(tf.add(k,g))

위에서 f 를 [2,3] 짜리 행렬로 선언했는데 reshape 를 통해 3,2 행렬로 바꿔주었다 

자주 쓰인다고 하니까 꼭 기억하자

>>tf.Tensor( [[1 2] [3 4] [5 6]], shape=(3, 2), dtype=int32)

tf.Tensor( [[11 13] [23 25] [35 37]], shape=(3, 2), dtype=int32)

반응형
Comments