Jayden1116
Jayden`s LifeTrip ๐Ÿ”†
Jayden1116
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • Jayden`s (481)
    • ๐Ÿฏ Hello, Jayden (144)
      • ์ผ๊ธฐ (1)
      • ์‹ ๋ฌธ (121)
      • ์Œ์•… (6)
      • ๊ฒฝ์ œ (16)
    • ๐Ÿ’› JavaScript (88)
      • ์ด๋ชจ์ €๋ชจ (4)
      • ๋ฐฑ์ค€ (44)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (40)
      • ๋ฒ„๊ทธ (0)
    • ๐ŸŽญ HTML CSS (6)
      • ํํŠธ๋ฏ€๋ฅด (2)
      • ํฌ์Šค์Šค (4)
    • ๐Ÿ’ป CS (13)
      • ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (1)
      • ๋„คํŠธ์›Œํฌ (9)
      • ์šด์˜์ฒด์ œ (1)
      • ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค (0)
      • ๋””์ž์ธ ํŒจํ„ด (1)
    • ๐Ÿ Python (71)
      • ๋ฐฑ์ค€ (67)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
    • ๐Ÿ’ฟ Data (156)
      • ์ด๋ชจ์ €๋ชจ (65)
      • ๋ถ€ํŠธ์บ ํ”„ (89)
      • ๊ทธ๋กœ์Šค ํ•ดํ‚น (2)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿ”ด ๋ธ”๋กœ๊ทธ(ํ™ˆ)
  • ๐Ÿฑ Github
  • ๊ธ€์“ฐ๊ธฐ
  • ํŽธ์ง‘
hELLO ยท Designed By JSW.
Jayden1116

Jayden`s LifeTrip ๐Ÿ”†

๐Ÿ’ฟ Data/์ด๋ชจ์ €๋ชจ

[๋”ฅ๋Ÿฌ๋‹]keras_cifar100 ์ด์šฉํ•œ ๊ฐ„๋‹จ ์‹ ๊ฒฝ๋ง ๋ฐ ๊ณผ์ ํ•ฉ ๋ฐฉ์ง€, ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹

2022. 2. 26. 22:23

0) ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋ฐ ํ™•์ธ, Normalization

import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten, Dropout
from tensorflow.keras.optimizers import Adam
from tensorflow.keras import regularizers

# ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
from tensorflow.keras.datasets import cifar100

(X_train, y_train), (X_test, y_test) = cifar100.load_data()

# ๋ฐ์ดํ„ฐ shape ํ™•์ธ
X_train.shape

# ํƒ€๊ฒŸ ํ™•์ธ(ํšŒ๊ท€/๋ถ„๋ฅ˜ ๊ตฌ๋ถ„, ๋ถ„๋ฅ˜์ผ ๋•Œ ์ด์ง„ ๋ถ„๋ฅ˜/๋‹ค์ค‘ ๋ถ„๋ฅ˜ ์—ฌ๋ถ€ ํ™•์ธ)
np.unique(y_train)

# ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ Normalization
X_train = X_train / 255.
X_test = X_test / 255.

1) ๊ธฐ๋ณธ ๋ชจ๋ธ

model = Sequential()
model.add(Flatten(input_shape=(32, 32, 3)))
model.add(Dense(256, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(100, activation='softmax'))

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

results = model.fit(X_train, y_train, epochs=30, batch_size=100, verbose=1, validation_split=0.2)

test_loss, test_acc = model.evaluate(X_test, y_test, verbose=2)

image

2) ๊ณผ์ ํ•ฉ ๋ฐฉ์ง€ ๋ชจ๋ธ(๊ฐ€์ค‘์น˜ ๊ฐ์†Œ, ๋“œ๋กญ์•„์›ƒ, ์–ผ๋ฆฌ ์Šคํƒ€ํ•‘ ์ ์šฉ)

model2 = Sequential()
model2.add(Flatten(input_shape=(32, 32, 3)))
model2.add(Dense(256, activation='relu',
           kernel_regularizer=regularizers.L2(0.00001),
           activity_regularizer=regularizers.L1(0.00001)))
model2.add(Dropout(0.2))
model2.add(Dense(128, activation='relu',
           kernel_regularizer=regularizers.L2(0.00001),
           activity_regularizer=regularizers.L1(0.00001)))
model2.add(Dropout(0.2))
model2.add(Dense(100, activation='softmax'))

model2.compile(optimizer='adam',
               loss='sparse_categorical_crossentropy',
               metrics=['accuracy'])

# ์–ผ๋ฆฌ์Šคํƒ€ํ•‘ ์ ์šฉ
import keras

early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=10, verbose=1)

save_best = keras.callbacks.ModelCheckpoint(filepath="best.hdf5",
                                            monitor='val_loss',
                                            verbose=1,
                                            save_best_only=True,
                                            save_weights_only=True,
                                            mode='auto',
                                            save_freq='epoch',
                                            options=None
                                            )

results2 = model2.fit(X_train, y_train, epochs=30, batch_size=100, validation_split=0.2, verbose=1, callbacks=[early_stop, save_best])

# ๊ทธ๋ƒฅ ํ•™์Šต๋œ ๊ฒฐ๊ณผ ํ™•์ธ( loss: 3.5875, accuracy : 0.1580)
test_loss, test_acc = model2.evaluate(X_test, y_test, verbose=2)

# best weights ๋ชจ๋ธ ํ™•์ธ
model2.load_weights("best.hdf5")
test_loss, test_acc = model2.evaluate(X_test, y_test, verbose=2)

image

3) GridSearchCV๋ฅผ ์ด์šฉํ•œ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹(๊ธฐ๋ณธ ๋ชจ๋ธ์— ์ ์šฉ)

from sklearn.model_selection import GridSearchCV
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier

def build_model3():
    model3 = Sequential()
    model3.add(Flatten(input_shape=(32, 32, 3)))
    model3.add(Dense(256, activation='relu'))
    model3.add(Dense(128, activation='relu'))
    model3.add(Dense(100, activation='softmax'))

    model3.compile(optimizer='adam',
                   loss='sparse_categorical_crossentropy',
                   metrics=['accuracy'])
    return model3

model3 = KerasClassifier(build_fn=build_model3, verbose=1)

# ํŠœ๋‹ํ•  ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ : batch_size ๋ฐ epochs
param_grid = dict(batch_size=[16, 32, 64, 128],
                  epochs=[10, 20, 30])

model3_grid = GridSearchCV(estimator=model3, param_grid=param_grid, n_jobs=-1)
grid_results = model3_grid.fit(X_train, y_train)

# ๊ฐ grid ์กฐํ•ฉ์— ๋”ฐ๋ฅธ accuracy ํ‰๊ท  ๋ฐ ํ‘œ์ค€ํŽธ์ฐจ ๊ฐ’
means = grid_results.cv_results_['mean_test_score']
stds = grid_results.cv_results_['std_test_score']
params = grid_results.cv_results_['params']

for mean, stdev, param in zip(means, stds, params):
    print(f"Means: {mean}, Stdev: {stdev} with: {param}") 

image


# best grid accuracy ๋ฐ ์‚ฌ์šฉํ•œ parameter
print(f"Best : {grid_results.best_score_}")
print(f"using_params : {grid_results.best_params_}")

image

๊ฒฐ๋ก 

  • ๋ฌด์ž‘์ • ๊ณผ์ ํ•ฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์€ ๋˜๋ ค ํ•™์Šต ํšจ์œจ์„ ๋–จ์–ด๋œจ๋ฆฌ๊ฒŒ ๋œ๋‹ค.
  • ๋ชจ๋ธ์„ fitํ•  ๋•Œ ์ •ํ•ด์ง€๋Š” ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ์™ธ์— ๋‹ค๋ฅธ ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค ํŠœ๋‹๋„ ์•Œ์•„๋ณด๊ธฐ

๊ธฐ๋ณธ ๋ชจ๋ธ๋ณด๋‹ค ๋” ์ข‹์€ ์„ฑ๋Šฅ์„ ๋‚ธ ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ์— ์ข‹์€ ์˜ˆ์‹œ๋Š” ์•„๋‹ˆ์ง€๋งŒ, ๊ณต๋ถ€ํ•˜์‹œ๊ธฐ์— ํฐ ํ๋ฆ„์„ ๋ณด๋Š” ์ •๋„๋กœ ๋ด์ฃผ์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. :)

'๐Ÿ’ฟ Data > ์ด๋ชจ์ €๋ชจ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋”ฅ๋Ÿฌ๋‹, NLP] ๋ถˆ์šฉ์–ด, ์ถ”์ถœ, BoW/TF-IDF  (0) 2022.03.06
[๋”ฅ๋Ÿฌ๋‹]ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹(sklearn์˜ RandomizedSearchCV, keras_tuner์˜ RandomSearch)  (0) 2022.03.01
[๋”ฅ๋Ÿฌ๋‹]๊ฐ„๋‹จ ์‹ ๊ฒฝ๋ง ๋ฐ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ๋ง, ์„ฑ๋Šฅ ๋น„๊ต  (0) 2022.02.26
[๋”ฅ๋Ÿฌ๋‹]์˜ตํ‹ฐ๋งˆ์ด์ €(Optimizer)  (0) 2022.02.24
[๋”ฅ๋Ÿฌ๋‹]์†์‹ค ํ•จ์ˆ˜  (0) 2022.02.23
    '๐Ÿ’ฟ Data/์ด๋ชจ์ €๋ชจ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [๋”ฅ๋Ÿฌ๋‹, NLP] ๋ถˆ์šฉ์–ด, ์ถ”์ถœ, BoW/TF-IDF
    • [๋”ฅ๋Ÿฌ๋‹]ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹(sklearn์˜ RandomizedSearchCV, keras_tuner์˜ RandomSearch)
    • [๋”ฅ๋Ÿฌ๋‹]๊ฐ„๋‹จ ์‹ ๊ฒฝ๋ง ๋ฐ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ๋ง, ์„ฑ๋Šฅ ๋น„๊ต
    • [๋”ฅ๋Ÿฌ๋‹]์˜ตํ‹ฐ๋งˆ์ด์ €(Optimizer)
    Jayden1116
    Jayden1116
    ์•„๋งˆ๋„ ํ•œ๋ฒˆ ๋ฟ์ธ ์ธ์ƒ์„ ์—ฌํ–‰ ์ค‘์ธ Jayden์˜ ์ผ์ง€๐Ÿ„๐ŸŒŠ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”