목차
반응형
In [37]:
import tensorflow as tf
import numpy as np
import pandas as pd
tf.__version__
Out[37]:
'2.4.0'
1. 개요¶
1.1. Dataset 설명¶
데이터에는 여러가지 타입이 있다.
- 정형데이터 : CSV, Excel, mysql
- 반정형데이터 : html, xml
- 비정형데이터 : nosql, jpg, mp3, mp4, 센서데이터
Tensorflow가 데이터를 학습하기 위해서는 위의 다양한 데이터들을 일정한 형식의 데이터 셋으로 변형해야 한다.
1.2. model.fit 에 대한 설명¶
정리된 데이터셋은 fit 함수의 파라미터로 들어가게 된다.
즉 fit함수에 알맞은 형태로 데이터셋을 만들어야 한다.
In [ ]:
model.fit(trin_dataset, label)
fit( x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None, validation_batch_size=None, validation_freq=1, max_queue_size=10, workers=1, use_multiprocessing=False )
1.2.1. x 값으로 올 수 있는 형식
- Numpy array (or array-like)
- TensorFlow tensor
- tf.data dataset
- generator
- keras.utils.Sequence returning (inputs, targets) or (inputs, targets, sample_weights)
1.2.2. y 값으로 올 수 있는 형식
- Numpy array (or array-like)
- TensorFlow tensor
- If x is a dataset, generator, or keras.utils.Sequence instance, y should not be specified (x에 타겟이 이미 포함되어 있기 때문).
모델 정의
In [9]:
def model_train(x_train, y_train):
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(2, activation='relu'),
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
return model
1. List
list를 바로 넣어도 잘 학습 됨을 알 수 있음
In [29]:
train_ls = [1, 2, 3, 4, 5, 6]
label_ls = [0, 0, 0, 1, 1, 1]
model_train(train_ls, label_ls)
Epoch 1/5
1/1 [==============================] - 0s 219ms/step - loss: 0.6931 - accuracy: 0.5000
Epoch 2/5
1/1 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5000
Epoch 3/5
1/1 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5000
Epoch 4/5
1/1 [==============================] - 0s 3ms/step - loss: 0.6931 - accuracy: 0.5000
Epoch 5/5
1/1 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5000
Out[29]:
<tensorflow.python.keras.engine.sequential.Sequential at 0x19ded008a60>
list가 2차원 일 때도 문제 없이 작동함
In [30]:
train_ls = [[1,1],
[2,2],
[3,3],
[4,4],
[5,5],
[6,6],]
label_ls = [0, 0, 0, 1, 1, 1]
model_train(train_ls, label_ls)
Epoch 1/5
1/1 [==============================] - 0s 226ms/step - loss: 0.6249 - accuracy: 0.5000
Epoch 2/5
1/1 [==============================] - 0s 2ms/step - loss: 0.6236 - accuracy: 0.5000
Epoch 3/5
1/1 [==============================] - 0s 2ms/step - loss: 0.6223 - accuracy: 0.5000
Epoch 4/5
1/1 [==============================] - 0s 3ms/step - loss: 0.6210 - accuracy: 0.5000
Epoch 5/5
1/1 [==============================] - 0s 2ms/step - loss: 0.6197 - accuracy: 0.5000
Out[30]:
<tensorflow.python.keras.engine.sequential.Sequential at 0x19dee4d4850>
3. Numpy¶
array 형태도 잘 학습할 수 있음
In [32]:
arr_x = np.array(train_ls)
arr_y = np.array(label_ls)
model_train(arr_x, arr_y)
Epoch 1/5
1/1 [==============================] - 0s 299ms/step - loss: 8.0590 - accuracy: 0.5000
Epoch 2/5
1/1 [==============================] - 0s 969us/step - loss: 8.0590 - accuracy: 0.5000
Epoch 3/5
1/1 [==============================] - 0s 997us/step - loss: 8.0590 - accuracy: 0.5000
Epoch 4/5
1/1 [==============================] - 0s 1ms/step - loss: 8.0590 - accuracy: 0.5000
Epoch 5/5
1/1 [==============================] - 0s 1ms/step - loss: 8.0590 - accuracy: 0.5000
Out[32]:
<tensorflow.python.keras.engine.sequential.Sequential at 0x19dee746bb0>
4. Tensor¶
Tensor 형태의 데이터도 잘 학습된다.
In [51]:
train_tensor = tf.constant(train_ls)
label_tensor = tf.constant(label_ls)
In [53]:
train_tensor
Out[53]:
<tf.Tensor: shape=(6, 2), dtype=int32, numpy=
array([[1, 1],
[2, 2],
[3, 3],
[4, 4],
[5, 5],
[6, 6]])>
In [52]:
label_tensor
Out[52]:
<tf.Tensor: shape=(6,), dtype=int32, numpy=array([0, 0, 0, 1, 1, 1])>
In [54]:
model_train(train_tensor, label_tensor)
Epoch 1/5
1/1 [==============================] - 0s 222ms/step - loss: 0.6931 - accuracy: 0.5000
Epoch 2/5
1/1 [==============================] - 0s 998us/step - loss: 0.6931 - accuracy: 0.5000
Epoch 3/5
1/1 [==============================] - 0s 997us/step - loss: 0.6931 - accuracy: 0.5000
Epoch 4/5
1/1 [==============================] - 0s 2ms/step - loss: 0.6931 - accuracy: 0.5000
Epoch 5/5
1/1 [==============================] - 0s 998us/step - loss: 0.6931 - accuracy: 0.5000
Out[54]:
<tensorflow.python.keras.engine.sequential.Sequential at 0x19df06a8730>
5. tf.data¶
모델을 학습시키기 위해서는 데이터 셋을 구성해야만 한다. Tensorflow 에서는 tf.data 를 이용할 수 있다.
tf.data의 장점
- 입력 파이프라인 구축 가능
- 많은 양의 데이터 처리 가능
- 다양한 데이터 형식 읽을 수 있음
- 복잡한 변환 수행 가능
자세한 설명은 다음 페이지에...
반응형
'Deep Learning > Tensorflow' 카테고리의 다른 글
Tensorflow 설치하는 방법 (0) | 2021.04.26 |
---|