https://www.tensorflow.org/guide/tensors#shape
- TF๋ ํ ์์ ๊ด๋ จ๋ ์ฐ์ฐ์ ์ ์ํ๊ณ ์คํํ๋ ํ๋ ์์ํฌ์ด๋ค.
- ํ ์๋ ๊ณ ์ฐจ์ ๋ฒกํฐ/ํ๋ ฌ์ ์ผ๋ฐํ๋ ๊ฐ๋ ์ด๋ค. (ํ ์๋ ๋ด๋ถ์ ์ผ๋ก base data type์ n์ฐจ์ ์ด๋ ์ด๋ก ํํ๋๋ค.)
- TF ํ๋ก๊ทธ๋จ์ ์ง๋ฉด์ ๊ณ์ ์กฐ์ํ๊ณ ๋๊ฒจ์ผ ํ ๊ฐ์ฒด๊ฐ ๋ฐ๋ก tf.Tensor ์ธ๋ฐ, tf.Tensor๋ ๋ถ๋ถ์ ์ผ๋ก ์ ์๋์๋ค๊ฐ ๋ง์ง๋ง์ ๊ฐ์ ์์ฑํ๋ ์ฐ์ฐ์ ๋งํ๋ค.
- TF ํ๋ก๊ทธ๋จ์ 1) ๋จผ์ tf.Tensor์ ๊ทธ๋ํ๋ฅผ ๋น๋ฉํ๊ณ 2) ์ด๋ป๊ฒ ๊ฐ ํ ์๊ฐ ๋ค๋ฅธ ๊ฐ๋ฅํ ํ ์์ ๊ธฐ๋ฐํด ์ฐ์ฐ๋๋์ง ๋ํ ์ผ๋งํ๊ณ 3) ์ด ๊ทธ๋ํ์ ์ผ๋ถ๋ฅผ ์คํํด ์ํ๋ ๊ฐ์ ์ป๋๋ค.
- tf.Tensor๋ ๋ ๊ฐ์ง properties๋ฅผ ๊ฐ๋๋ค:
- a data type (float32, int32, string ๋ฑ)
- a shape
- ํ ์์ ๊ฐ ์์๋ ๊ฐ์ ๋ฐ์ดํฐํ์ ์ ๊ฐ์ง๋ฉฐ data type์ ์ธ์ ๋ ์๋ ค์ ธ ์์ด์ผ ํ๋ค.
- shape์ ํ ์๊ฐ ๊ฐ์ง๋ ์ฐจ์์ ๊ฐ์์ ๊ฐ ์ฐจ์์ ์ฌ์ด์ฆ๋ฅผ ๋งํ๋ฉฐ, ์ผ๋ถ๋ง ์๋ ค์ ธ ์์ ์๋ ์๋ค.
- ์ธํ์ shape์ด ์์ ํ ์๋ ค์ ธ ์์ผ๋ฉด ๋๋ถ๋ถ ์์ํ๋ ์์ ํ ์๋ ค์ ธ ์์ผ๋, ๊ทธ๋ํ๋ฅผ ์คํํ ๋๊ฐ ๋์์ผ shape์ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
- ํ
์ ์ค ํน๋ณํ ๋ช ๊ฐ์ง๊ฐ ์๋ค:
- tf.Variable
- tf.constant
- tf.placeholder
- tf.SparseTensor
- tf.Variable ๋นผ๊ณ ํ ์์ ๊ฐ์ ๋ณํ์ง ์๋๋ค. ์ฆ single execution tensors์ ๊ฒฝ์ฐ ์ค์ง ํ๋์ ๊ฐ๋ง ๊ฐ๋๋ค.
- ๊ทธ๋ฌ๋, ๊ฐ์ ํ ์๋ฅผ ๋ ๋ฒ evaluating ํ๋ ๊ฒ์ ๋ค๋ฅธ ๊ฐ์ ๋ฐํํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ํ ์๊ฐ ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๊ฑฐ๋ ๋์๋ฅผ ๋ง๋๋ ๊ฒฐ๊ณผ๊ฐ์ผ ์ ์๋ค.
Rank
- tf.Tensor์ rank๋ ์ฐจ์์ ๊ฐ์์ด๋ค. rank์ ์ ์ฌ์ด๋ก๋ order, degree, n-dimension์ด ์๋ค.
- TF์์์ rank๋ ์ํ์์์ matrix rank์๋ ๋ค๋ฅด๋ค. ์๋์ ๊ฐ์ด TF์ ๊ฐ rank๋ ์๋ก ๋ค๋ฅธ ์ํ์ ์ํฐํฐ์ ๋์๋๋ค.
- Rank 0: Scalar (magnitude only)
- Rank 1: Vector (magnitude and direction)
- Rank 2: Matrix (table of numbers)
- Rank 3: 3-Tensor (cube of numbers)
- Rank n: n-Tensor (you get the idea)
- tf.rank ํจ์๋ก tf.Tensor์ rank๋ฅผ ๊ฒฐ์ ํ ์ ์๋ค.
my_image = tf.zeros([10, 299, 299, 3]) # batch x height x width x color
r = tf.rank(my_image)
# After the graph runs, r will hold the value 4.
- tf.Tensor ๋ด ํ๋์ ์ ์ ์ ๊ทผํ๋ ค๋ฉด n indices๋ฅผ ๋ช ์ํด์ผ ํ๋ค.
my_matrix = tf.Variable([ [4, 9], [16, 25] ], tf.int32)
my_scalar = my_matrix[0, 1]
# shape=(), dtype=int32, numpy=9
my_row_vector = my_matrix[0]
# shape=(2,), dtype=int32, numpy=array([4, 9], dtype=int32)
my_column_vector = my_matrix[:, 1]
# shape=(2,), dtype=int32, numpy=array([ 9, 25], dtype=int32)
Shape
- ํ ์์ shape๋ ๊ฐ ์ฐจ์์ ์์๊ฐ ๋ช ๊ฐ๊ฐ ์๋๋๋ฅผ ์๋ฏธํ๋ค.
- TF๋ ๊ทธ๋ํ๋ฅผ ๊ตฌ์ฑํ ๋ ์๋์ผ๋ก shape๋ฅผ ์ถ๋ก ํ๋ค. ์ด ์ถ๋ก ๋ shape๋ rank๋ฅผ ์ ์๋, ๋ชจ๋ฅผ ์๋ ์๋ค. rank๋ฅผ ์์๋ ๊ฐ ์ฐจ์์ ํฌ๊ธฐ๋ฅผ ์ ์๋, ๋ชจ๋ฅผ ์๋ ์๋ค.
- TF ๋คํ๋จผํธ์์๋ 1) rank, 2) shape, 3) dimensional number ์ธ ๊ฐ์ง์ notational convention์ ์ฌ์ฉํ๋ค.
Rank | Shape | Dimensional number | Example |
0 | [] | 0-D | A 0-D tensor. A scalar. |
1 | [D0] | 1-D | A 1-D tensor with shape [5] |
2 | [D0, D1] | 2-D | A 2-D tensor with shape [3, 4] |
3 | [D0, D1, D2] | 3-D | A 3-D tensor with shape [1, 4, 3] |
n | [D0, D1, D2, ... Dn-1] | n-D | A tensor with shape [D0, D1, D2, ... Dn-1] |
- tf.Tensor์ shape์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์๋ค.
- 1) tf.Tensor์ shape property์ ์ ๊ทผ
- ๊ทธ๋ํ๋ฅผ ๋น๋ฉํ ๋ ํ ์์ shape์ ๋ํด ์ด๋ฏธ ์๊ณ ์๋ ๊ฒ์ ๋ฌด์์ธ์ง ๋ฌป๋ ๊ฒ์ด ์ ์ฉํ ๋๊ฐ ์๋ค. ์ด ๋ ์ด ๋ฐฉ๋ฒ์ ์ด๋ค.
- ์ด ๋ฉ์๋๋ TensorShape ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ฉฐ, TensorShape ๊ฐ์ฒด๋ ์ผ๋ถ๋ง ๋ช ์๋ shape๋ฅผ ํํํ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ด๋ค. (๊ทธ๋ํ๋ฅผ ๋น๋ฉํ ๋ ๋ชจ๋ shape๊ฐ ์์ ํ ์๋ ค์ง๋ ๊ฒ์ ์๋๋ฏ๋ก)
- 2) tf.shape operation
- tf.Tensor์ ์์ ํ ์๋ ค์ง shape๋ฅผ runtime์ ์ ์ ์๋ ๋ฐฉ๋ฒ๋ ์๋ค.
- ์ด ๋ฐฉ๋ฒ์ผ๋ก ํ ์์ shape๋ฅผ ์กฐ์ํ๋ ๊ทธ๋ํ๋ฅผ ๋น๋ฉํ ์ ์๋ค. shape ์กฐ์์ ์ธํ tf.Tensor์ dynamic shape์ ์์กดํ๋ ๋ค๋ฅธ ํ ์๋ฅผ ๋น๋ฉํจ์ผ๋ก์จ ์ด๋ฃจ์ด์ง๋ค.
- tf.Tensor์ shape ๋ณ๊ฒฝ
- ํ ์์ ์์ ๊ฐ์๋ shape ์ฌ์ด์ฆ์ ๊ณฑ๊ณผ ๊ฐ๋ค.
- scalar์ ์์ ๊ฐ์๋ ํญ์ 1์ด๋ค.
- ๊ฐ์ ์์ ๊ฐ์๋ฅผ ๊ฐ๋ ์๋ก ๋ค๋ฅธ shape๋ ๋ง์ ์ ์๊ธฐ ๋๋ฌธ์, ์์๋ ์ ์งํ๋ฉด์ shape๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ด ์ ์ฉํ ์ ์๋ค.
- https://www.tensorflow.org/guide/tensors#getting_a_tftensor_objects_shape
Data types
- ์ฐจ์๊ณผ ๋๋ถ์ด ํ ์๋ data type์ ๊ฐ์ง๋ค. data type ๋ฆฌ์คํธ๋ ์ฌ๊ธฐ์ ์ฐธ๊ณ .
- tf.Tensor๋ ์ฌ๋ฌ ๊ฐ์ data type์ ๊ฐ์ง ์ ์๋ค. ๊ทธ๋ฌ๋ ์์์ ์๋ฃ ๊ตฌ์กฐ๋ฅผ strings๋ก serialize ํ๊ณ tf.Tensors๋ก ์ ์ฅํ ์ ์๋ค.
- tf.Tensor์ data type์ ํ์ธํ๋ ค๋ฉด Tensor.dtype property๋ฅผ ์ด์ฉํ๋ผ.
- tf.cast๋ฅผ ์ด์ฉํด tf.Tensor์ data type์ ๋ฐ๊ฟ ์ ์๋ค.
- ํ์ด์ฌ ๊ฐ์ฒด๋ก tf.Tensor๋ฅผ ๋ง๋ค ๋ data type์ ์ ํ์ ์ผ๋ก ๋ช ์ํ ์ ์๋ค. ๊ทธ๋ฌ์ง ์์ผ๋ฉด TF๋ ์ ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ํํํ ์ ์๋ data type์ ์ ํํ๋ค. TF๋ ํ์ด์ฌ integer๋ฅผ tf.int32๋ก, ํ์ด์ฌ floating point๋ฅผ tf.float32๋ก ๋ณํํ๋ค.
- ๊ทธ๋ฌ์ง ์์ผ๋ฉด TF๋ ์ด๋ ์ด๋ฅผ ๋ณํํ ๋ numpy๊ฐ ์ฐ๋ ๋ฃฐ์ ์ฌ์ฉํ๋ค.
Evaluating Tensors
- ์ผ๋จ ์ฐ์ฐ ๊ทธ๋ํ๊ฐ ๋น๋ฉ๋๋ฉด, ํน๋ณํ tf.Tensor๋ฅผ ์์ฑํ๊ณ ๊ฑฐ๊ธฐ์ ํ ๋น๋ ๊ฐ์ fetchํ๋, ์ฐ์ฐ์ ์คํํ ์ ์๋ค. ์ด๊ฑด ๋๋ฒ๊น ์์๋ ์ ์ฉํ๋ค.
- Tensor.eval ๋ฉ์๋๋ก ํ ์๋ฅผ evaluating ํ ์ ์๋ค. eval์ default tf.Session์ด activeํ ๋๋ง ์๋ํ๋ค. eval์ ๊ทธ ํ ์์ ๊ฐ์ contents๋ฅผ ๊ฐ์ง๋ numpy ์ด๋ ์ด๋ฅผ ๋ฐํํ๋ค.
- context๊ฐ ์๋ ์ํ์์ tf.Tensor๋ฅผ evaluating ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๋๋ ์๋ค. ๊ทธ ๊ฐ์ด ์์ง unavailableํ dynamic information์ ์์กดํ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ์๋ฅผ ๋ค์ด placeholder์ ์์กดํ๋ ํ ์๋ placeholder์ ์ค ๊ฐ์ ์ฃผ์ง ์์ผ๋ฉด evaluating ํ ์ ์๋ค.
- placeholder ๋ฟ ์๋๋ผ ์ด๋ค tf.Tensor๋ผ๋ feedํ ์ ์๋ค.
- TF๋ ํจ์ ๋ด๋ถ๋ control flow constructs ๋ด๋ถ์์ ์ ์๋ tf.Tensor๋ ๋ฐ๋ก evaluating ํ์ง ๋ชปํ๋ค.
- ๋ง์ฝ tf.Tensor๊ฐ ํ์ ๊ฐ์ ์์กดใดํ๋ค๋ฉด, tf.Tensor๋ฅผ evaluating ํ๋ ๊ฒ์ ์ด๋ค ๊ฒ์ด ์ธํ๋ ๋ค์์์์ผ ๊ฐ๋ฅํ๋ค. ํ๋ก ์์ ํ ๋๋ tf.Tensor๋ฅผ evaluating ํ๊ธฐ ์ ์ tf.train.start_queue_runners๋ฅผ ํธ์ถํ๋ผ.
Printing Tensors
- ๋๋ฒ๊น ๋ชฉ์ ์ผ๋ก tf.Tensor์ ๊ฐ์ ํ๋ฆฐํธํ๊ณ ์ถ์ ์ ์๋ค.
- ๋จ์ํ print(tensor) ์ฒ๋ผ์ ์ ์ฐ์ง ์๋๋ค.
- ์ด ์ฝ๋๋ ๊ทธ๋ํ๊ฐ ๋น๋ฉ๋์์ ๋์ symbolic tensor๋ฅผ ํ๋ฆฐํธํ๋ค. ์ด ํ ์๋ ๊ฐ์ ๊ฐ์ง๊ณ ์์ง ์๋ค.
- ์ด ์ฝ๋๋ ๋ฏธ๋ค์ง ์ฐ์ฐ์ ํํํ๋ tf.Tensor ๊ฐ์ฒด๋ฅผ ํ๋ฆฐํธํ๋ค. (๊ฐ์ด ์๋๋ผ)
- ๋์ TF๋ tf.Print operation์ ์ ๊ณตํ๋ค.
- tf.Print๋ ๋ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌ๋ tf.Tensor์ ์ธํธ๋ฅผ ํ๋ฆฐํธํ๋ ๋์, ๋ณ๊ฒฝ๋์ง ์์ ์ฒซ ์ธ์๋ฅผ ๋ฐํํ๋ค.
'๋จธ์ ๋ฌ๋, ๋ฅ๋ฌ๋ > OCR' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
tf.Example, tfrecord ๊ณต๋ถ (0) | 2019.08.23 |
---|---|
Multi-GPU Model์์ h5(hdf5)๋ฅผ ๋ก๋ํ์ง ๋ชปํ๋ ๋ฌธ์ (0) | 2019.08.13 |
Variable Scope ๊ณต๋ถ (0) | 2019.08.13 |
Attention ๊ณต๋ถ (0) | 2019.08.12 |
Attention Is All You Need ๊ณต๋ถ (0) | 2019.08.09 |
๋๊ธ