model = keras.Sequential([
layers.Dense(64, activation='relu', name='first_layer'),
layers.Dense(32, activation='relu')
], name='sequential_model')
model.add(layers.Dense(10 ,activation='softmax', name='last_layer'))
model.weights 나 model.summary() 등은 build나 complie 이후에 볼 수 있다.
inputs = keras.Input(shape=(3,), name='input')
hidden = keras.Sequential([layers.Dense(32, activation='relu'), layers.Dense(64, activation='relu')])(inputs)
features = layers.Dense(64, activation='relu')(hidden)
outputs = layers.Dense(10, activation='softmax')(features)
model = keras.Model(inputs=inputs, outputs=outputs)
위와 같이 쓸 수 있다.
vocab_size = 10000
num_tags = 100
num_departments = 4
#3개의 입력
title = keras.Input(shape=(vocab_size,), name='title')
text_body = keras.Input(shape=(vocab_size,), name='text_body')
tags = keras.Input(shape=(num_tags,), name='tags')
features = layers.Concatenate()([title, text_body, tags])
features = layers.Dense(64, activation='relu')(features)
#2개의 출력
priority = layers.Dense(1, activation='sigmoid', name='priority')(features)
department = layers.Dense(num_departments, activation='softmax', name='department')(features)
model = keras.Model(inputs=[title, text_body, tags], outputs=[priority, department])
컴파일과 학습은 아래와 같이 할 수 있다.
model.compile(optimizer='rmsprop', loss={'priority':'mean_squared_error', 'department':'categorical_crossentropy'}, metrics={'priority': ['mean_absolute_error'], 'department': ['accuracy']})
model.fit({'title': title_data, 'text_body': text_body_data, 'tags': tags_data}, {'priority': priority_data, 'department': department_data})
priority_pred, department_pred = model.predict({'title': title_data, 'text_body': text_body_data, 'tags': tags_data})
keras.utils.plot_model(model, 'ticket_classifier.png', show_shapes=True, show_layer_activations=True)
