Skip to content
Rain Hu's Workspace
Go back

[AI] 卷積神經網路

Rain Hu

Convolutional Neural Network(CNN)

建構 convnet

from tensorflow import keras
from tensorflow.keras import layers
def get_cnn_model():
    inputs = keras.Input(shape=(28, 28, 1))
    x = layers.Conv2D(filters=32, kernel_size=3, activation="relu")(inputs)
    x = layers.MaxPooling2D(pool_size=2)(x)
    x = layers.Conv2D(filters=64, kernel_size=3, activation="relu")(x)
    x = layers.MaxPooling2D(pool_size=2)(x)
    x = layers.Conv2D(filters=128, kernel_size=3, activation="relu")(x)
    x = layers.Flatten()(x)
    outputs = layers.Dense(10, activation="softmax")(x)
    model = keras.Model(inputs=inputs, outputs=outputs)
    return model

model = get_cnn_model()
model.summmary()

convnet1

\text{參數量}=(\text{kernel\\_size}^2 \times \text{input\\_channels} + 1) × \text{output\\_channels}
from tensorflow.keras.datasets import mnist

model = get_cnn_model()

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000, 28, 28, 1))
train_images = train_images.astype("float32") / 255
test_images = test_images.reshape((10000, 28, 28, 1))
test_images = test_images.astype("float32") / 255
model.compile(optimizer="rmsprop",
              loss="sparse_categorical_crossentropy",
              metrics=["accuracy"])
model.fit(train_images, train_labels, epochs=5, batch_size=64)
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f"Test accurarcy: {test_acc:.3f}")
> Test accurarcy: 0.992

卷積層的功用

最大池化(max pooling)


Share this post on:

Previous
[.NET] User Secret CLI
Next
[AI] 機器學習的流程