import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.applications import VGG16
vgg16 = VGG16(weights='imagenet', include_top=False,
input_shape=(32, 32, 3))
vgg16.trainable = False #vgg16의 가중치를 동결.
model = Sequential()
model.add(vgg16)
model.add(Flatten())
model.add(Dense(100))
model.add(Dense(10, activation='softmax'))
# model.trainable = False #모든 레이어 가중치 동결
model.summary()
print(len(model.weights))
print(len(model.trainable_weights))
#전이모델 또한 weight를 동결 시킬때, 동결 시키지 않을때 어느쪽이 성능이 좋다고 말할 수 없다.
# print(model.layers)
import pandas as pd
pd.set_option('max_colwidth', -1)
layers = [(layer, layer.name, layer.trainable)for layer in model.layers]
print(layers)
results = pd.DataFrame(layers, columns=['Layer Type', 'Layer Name', 'Layer Trainable'])
print(results)