<jupyter_start><jupyter_text>기본 모델의 함수형 작성함수형 API 는 순차형 모델로는 구축할 수 없는 더 복잡한 신경망을 구축할 수 있게 해준다.순차형 모델은 그래프 같은 모델이나 파이썬 함수처럼 동작하는 모델을 지원하지 않으며, 최종 계층 전에 보조 출력을 추출해야 할때, 이를 해결할 간단한 방법이 없다는 한계가 있다. 게다가 두 모델 사이에 계층을 공유하기도 어렵다. 하지만 이러한 한계는 함수형 API 를 통해 해결할 수 있다.우선 간단한 mnist data set 의 함수형 모델에 대해서는 아래와 같이 작성한다.<jupyter_code>import numpy as np
from keras.layers import Dense, Dropout, Input
from keras.layers import Conv2D, MaxPooling2D, Flatten
from keras.models import Model
from keras.datasets import mnist
from keras.utils import to_categorical
(x_train, y_train),(x_test, y_test) = mnist.load_data()
num_labels = len(np.unique(y_train))
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
image_size = x_train.shape[1]
x_train = np.reshape(x_train,[-1,image_size,image_size,1])
x_test = np.reshape(x_test,[-1,image_size,image_size,1])

x_train = x_train.astype('float32')/255
x_test = x_test.astype('float32')/255
input_shape = (image_size,image_size,1)
batch_size =128
kernel_size = 3
filters = 64
dropout = 0.3
inputs = Input(shape = input_shape)
y = Conv2D(filters=filters, kernel_size = kernel_size, activation='relu')(inputs)
y = MaxPooling2D()(y)
y = Conv2D(filters=filters, kernel_size = kernel_size, activation='relu')(y)
y = MaxPooling2D()(y)
y = Conv2D(filters=filters, kernel_size = kernel_size, activation='relu')(y)
y = Flatten()(y)
y = Dropout(dropout)(y)
outputs = Dense(num_labels, activation='softmax')(y)

model = Model(inputs=inputs, outputs=outputs)

model.summary()
model.fit(x_train, y_train,validation_data=(x_test,y_test),epochs=20,batch_size=batch_size)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11721159777914868, 'fraction_numerical': 0.020357803824799507, 'mean_word_length': 6.5092592592592595, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '176277', 'license': 'MIT', 'n_tokens_mistral': 838, 'n_tokens_neox': 922, 'n_words': 162, 'path': 'CNN_based_Classification/API_CNN.ipynb', 'repo_name': 'hansong0219/Advanced-Deep-learning-Notebooks', 'size': '1621'}