2주차-3월 14일
빅데이터분석특강
import tensorflow as tf
import numpy as np
tf.config.experimental.list_physical_devices('GPU')
-
리스트
lst = [1,2,4,5,6]
lst
lst[1] # 두번쨰원소
lst[-1] # 마지막원소
-
(2,2) matrix 느낌의 list
lst= [[1,2],[3,4]]
lst
위를 아래와 같은 매트릭스로 생각할수 있다.
1 2
3 4
print(lst[0][0]) # (1,1)
print(lst[0][1]) # (1,2)
print(lst[1][0]) # (2,1)
print(lst[1][1]) # (2,2)
-
(4,1) matrix 느낌의 list
lst=[[1],[2],[3],[4]] # (4,1) matrix = 길이가 4인 col-vector
lst
-
(1,4) matrix 느낌의 list
lst=[[1,2,3,4]] # (1,4) matrix = 길이가 4인 row-vector
lst
tf.constant(3.14)
tf.constant(3.14)+tf.constant(3.14)
-
벡터
_vector=tf.constant([1,2,3])
_vector[-1]
-
매트릭스
_matrix= tf.constant([[1,0],[0,1]])
_matrix
-
array
tf.constant([[[0,1,1],[1,2,-1]],[[0,1,2],[1,2,-1]]])
type(tf.constant(3.14))
_matrix = tf.constant([[1,2],[3,4]])
_matrix
_matrix[0][0]
_matrix[0]
_matrix[0,:]
_matrix[:,0]
a=tf.constant([1,22,33])
a
a[0]=11
-
묵시적 형변환이 불가능하다
tf.constant(1)+tf.constant(3.14)
tf.constant(1.0)+tf.constant(3.14)
-
같은 float도 안되는 경우가 있음
tf.constant(1.0,dtype=tf.float64)
tf.constant(3.14)
tf.constant(1.0,dtype=tf.float64)+tf.constant(3.14)
np.array(tf.constant(1)) # 방법1
a=tf.constant([3.14,-3.14])
type(a)
a.numpy()
-
더하기
a=tf.constant([1,2])
b=tf.constant([3,4])
a+b
tf.add(a,b)
-
곱하기
a=tf.constant([[1,2],[3,4]])
b=tf.constant([[5,6],[7,8]])
a*b
tf.multiply(a,b)
-
매트릭스의곱
a=tf.constant([[1,0],[0,1]]) # (2,2)
b=tf.constant([[5],[7]]) # (2,1)
a@b
tf.matmul(a,b)
-
역행렬
a=tf.constant([[1,0],[0,2]])
a
tf.linalg.inv(a)
a=tf.constant([[1.0,0.0],[0.0,2.0]])
tf.linalg.inv(a)
-
tf.linalg.
+ tab
을 누르면 좋아보이는 연산들 많음
a=tf.constant([[1.0,2.0],[3.0,4.0]])
print(a)
tf.linalg.det(a)
tf.linalg.trace(a)
a=tf.constant([1,2,3,4])
a
tf.reshape(a,(4,1))
tf.reshape(a,(2,2))
tf.reshape(a,(2,2,1))
-
다차원
a=tf.constant([1,2,3,4,5,6,7,8,9,10,11,12])
a
tf.reshape(a,(2,2,3))
tf.reshape(a,(4,3))
-
tf.resh
a=tf.constant([1,2,3,4,5,6,7,8,9,10,11,12])
a
tf.reshape(a,(4,-1))
tf.reshape(a,(2,2,-1))
b=tf.reshape(a,(2,2,-1))
b
tf.reshape(b,-1)
np.diag([1,2,3,4])
tf.constant(np.diag([1,2,3,4]))
-
tf.ones, tf.zeros
tf.zeros([3,3])
tf.reshape(tf.constant([0]*9),(3,3))
-
range(10)
a=range(0,12)
tf.constant(a)
tf.constant(range(1,20,3))
-
tf.linspace
tf.linspace(0,1,10)
a=tf.constant([[1],[2]])
b=tf.constant([[3],[4]])
a,b
tf.concat([a,b],axis=1)
-
(2,1) concat (2,1) => (4,1)
- 첫번째 축이 바뀌었다. => axis=0
a=tf.constant([[1],[2]])
b=tf.constant([[3],[4]])
a,b
tf.concat([a,b],axis=0)
-
(1,2) concat (1,2) => (2,2)
- 첫번째 // axis=0
a=tf.constant([[1,2]])
b=tf.constant([[3,4]])
tf.concat([a,b],axis=0)
-
(1,2) concat (1,2) => (1,4)
- 첫번째 // axis=0
-
(2,3,4,5) concat (2,3,4,5) => (4,3,4,5)
- 첫번째 // axis=0
a=tf.reshape(tf.constant(range(120)),(2,3,4,5))
b=-a
tf.concat([a,b],axis=0)
-
(2,3,4,5) concat (2,3,4,5) => (2,6,4,5)
- 두번째 // axis=1
a=tf.reshape(tf.constant(range(120)),(2,3,4,5))
b=-a
tf.concat([a,b],axis=1)
-
(2,3,4,5) concat (2,3,4,5) => (2,3,8,5)
- 세번째 // axis=2
a=tf.reshape(tf.constant(range(120)),(2,3,4,5))
b=-a
tf.concat([a,b],axis=2)
-
(2,3,4,5) concat (2,3,4,5) => (2,3,4,10)
- 네번째 // axis=3 # 0,1,2,3 // -4 -3 -2 -1
a=tf.reshape(tf.constant(range(120)),(2,3,4,5))
b=-a
tf.concat([a,b],axis=-1)
-
(4,) concat (4,) => (8,)
- 첫번째축? // axis=0
a=tf.constant([1,2,3,4])
b=-a
a,b
tf.concat([a,b],axis=0)
-
(4,) concat (4,) => (4,2)
- 두번째축? // axis=1 ==> 이런거없다..
a=tf.constant([1,2,3,4])
b=-a
a,b
tf.concat([a,b],axis=1)
a=tf.constant([1,2,3,4])
b=-a
a,b
tf.stack([a,b],axis=0)
tf.stack([a,b],axis=1)
np.diag([1,2,3]).reshape(-1)
- 넘파이는 이런식으로
np.diag()
도 쓸수 있고 reshape을 메소드로 쓸 수도 있는데... #### tnp 사용방법 (불만해결방법)
import tensorflow.experimental.numpy as tnp
tnp.experimental_enable_numpy_behavior()
type(tnp.array([1,2,3]))
-
int와 float을 더할 수 있음
tnp.array([1,2,3])+tnp.array([1.0,2.0,3.0])
tf.constant([1,2,3])+tf.constant([1.0,2.0,3.0])
tnp.array(1)+tnp.array([1.0,2.0,3.0])
tnp.diag([1,2,3])
a=tnp.diag([1,2,3])
type(a)
a=tf.constant([1,2,3])
a.reshape(3,1)
np.random.randn(5)
tnp.random.randn(5) # 넘파이가 되면 나도 된다.
type(tnp.random.randn(5))
tf.constant([1,1])+tf.constant([2.2,3.3])
-
메소드를 쓸수 있음.
a= tnp.array([[1,2,3,4]])
a.T
a=tf.constant([1,2,3])
a
a[0]=11