데이터를 담기 위한 컨테이너
다차원 배열 or 리스트와 유사
수치형 데이터 저장
동적 크기
용어
import tensorflow as tf
tf.constant()
: 상수 텐서tf.rank()
적용 : 축 개수(shape=() 부분으로 해석)t0 = tf.constant(1)
print(t0)
print(tf.rank(t0))
t1 = tf.constant([1, 2, 3])
print(t1)
print(tf.rank(t1))
t2 = tf.constant([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print(t2)
print(tf.rank(t2))
t3 = tf.constant([[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
[[10, 11, 12], [13, 14, 15], [16, 17, 18]],
[[19, 20, 21], [22, 23, 24], [25, 26, 27]]])
print(t3)
print(tf.rank(t3))
...
i = tf.constant(2)
print(i)
f = tf.constant(2.)
print(f)
s = tf.constant('Suan')
print(s)
f16 = tf.constant(2., dtype=tf.float16)
print(f16)
i8 = tf.constant(2, dtype=tf.int8)
print(i8)
f32 = tf.cast(f16, tf.float32)
print(f32)
i32 = tf.cast(i8, tf.int32)
print(i32)
x = tf.constant([[1], [2], [3]])
print(x)
print(x.shape)
y = tf.reshape(x, [1, 3])
print(y)
print(y.shape)
print(y)
print(tf.transpose(y))
print(y.shape)
print(x)
print(tf.squeeze(x))
print(y)
print(tf.expand_dims(y, axis=0))
print(tf.expand_dims(y, axis=1))
print(tf.expand_dims(y, axis=2))
# 텐서 x를 3개로 분리
print(x)
print(tf.split(x, 3))
tf.Tensor(
[[1]
[2]
[3]], shape=(3, 1), dtype=int32)
[<tf.Tensor: shape=(1, 1), dtype=int32, numpy=array([[1]], dtype=int32)>, <tf.Tensor: shape=(1, 1), dtype=int32, numpy=array([[2]], dtype=int32)>, <tf.Tensor: shape=(1, 1), dtype=int32, numpy=array([[3]], dtype=int32)>]
print(x)
print(tf.concat([x, x], axis=0))
print(tf.concat([x, x], axis=1))
tensor = tf.constant([1, 2, 3, 4, 5, 6]) # 1차원 텐서
reshaped_tensor = tf.reshape(tensor, [2, 3])
print("reshaped_tensor:", reshaped_tensor)
# tf.reduce_sum() : 합
sum_of_tensor = tf.reduce_sum(reshaped_tensor)
print("합:", sum_of_tensor)
# tf.reduce_mean() : 평균
mean_of_tensor = tf.reduce_mean(reshaped_tensor)
print("평균:", mean_of_tensor)
# tf.argmax() : 최대값의 인덱스
max_index = tf.argmax(reshaped_tensor, axis=1) # 행별 최대값 인덱스
print("행별 최대값 인덱스:", max_index)
# tf.equal() : 비교 (두 텐서가 동일한지)
a = tf.constant([1, 2, 3])
b = tf.constant([1, 0, 3])
comparison_result = tf.equal(a, b)
print("두 텐서가 동일한지:", comparison_result)
print(tf.constant(2) + tf.constant(2))
print(tf.constant(2) - tf.constant(2))
print(tf.add(tf.constant(2), tf.constant(2)))
print(tf.subtract(tf.constant(2), tf.constant(2)))
print(tf.constant(2) * tf.constant(2))
print(tf.constant(2) / tf.constant(2))
print(tf.multiply(tf.constant(2), tf.constant(2)))
print(tf.divide(tf.constant(2), tf.constant(2)))
print(tf.constant(2) + tf.constant(2.2))
InvalidArgumentError: cannot compute AddV2 as input #1(zero-based) was expected to be a int32 tensor but is a float tensor [Op:AddV2]
print(tf.cast(tf.constant(2), tf.float32) + tf.constant(2.2))
a = tf.constant([1,2,3])
b = tf.constant([4,5,6])
print(a)
print(b)
print(a+b)
print(a-b)
print(a*b)
print(b/a)
a = tf.constant([[1,2], [3,4]])
b = tf.constant([[5,6], [7,8]])
print(a)
print(b)
@
: 행렬곱 연산print(a + b) # element-wise addition
print(a - b) # element-wise subtraction
print(a * b) # element-wise multiplication
print(a @ b) # matrix multiplication
print(a / b) # element-wise division
print(tf.add(a, b))
print(tf.subtract(a, b))
print(tf.multiply(a, b))
print(tf.matmul(a, b))
print(tf.divide(a, b))
reduce_max()
: 텐서 값 중 최댓값 계산argmax()
: 최댓값 위치 반환nn.softmax()
: 텐서 값을 0과 1 사이 값으로 보여줌c = tf.constant([[4.0, 5.0, 6.0],
[10.0, 9.0, 8.0]])
print(tf.reduce_max(c))
print(tf.argmax(c))
print(tf.nn.softmax(c))
a = tf.constant([[1, 2, 3], [4, 5, 6]])
b = tf.constant([[7, 8, 9], [10, 11, 12]])
# 최대값과 인덱스 찾기
max_value = tf.reduce_max(a)
max_index = tf.argmax(a, axis=1)
print("\n최대값:", max_value)
print("행마다 최대값의 인덱스:\n", max_index)
# 텐서 비교
compare_result = tf.equal(a, b)
print("\n텐서 비교 결과 (a와 b):\n", compare_result)
# Broadcasting 연산
c = tf.constant([1, 2, 3])
broadcast_result = a + c
print("\nBroadcasting 연산 결과:\n", broadcast_result)
# Tensor Slicing
slice_result = a[:, 1:]
print("\nTensor Slicing 결과:\n", slice_result)
# 조건부 연산 : tf.where
condition = a > 3
where_result = tf.where(condition, a, tf.zeros_like(a))
print("\n조건부 연산 결과 (a > 3):\n", where_result)
a = tf.constant([1, 2, 3, 4, 5, 6, 7, 8])
b = tf.constant([[1., 2., 3., 4., 5., 6., 7., 8.]])
a = tf.reshape(a, [2, 2, 2])
b = tf.reshape(b, [2, 2, 2])
b = tf.cast(b, tf.int32)
print(a@b)