TF: TensorFlow menggunakan Keras

From OnnoWiki
Jump to navigation Jump to search

Keras adalah antarmuka high-level dari TensorFlow yang memudahkan kita dalam membangun Neural Network (NN) tanpa harus menulis kode tingkat rendah. Dengan Keras, kita bisa membuat model dengan beberapa baris kode.

1. Instalasi TensorFlow

Jika belum terinstal, jalankan perintah berikut:

pip install tensorflow

Lalu, kita bisa mengimpor TensorFlow dan Keras:

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

2. Membuat Model Neural Network Sederhana

Kita bisa membangun model Sequential yang paling umum digunakan.

model = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=(10,)),  # Layer pertama dengan 64 neuron
    layers.Dense(32, activation='relu'),  # Hidden layer dengan 32 neuron
    layers.Dense(1, activation='sigmoid')  # Output layer (sigmoid untuk binary classification)
])

# Menampilkan struktur model
model.summary()

3. Mengompilasi Model

Sebelum melatih model, kita perlu mengompilasinya dengan menentukan loss function, optimizer, dan metrics.

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

4. Melatih Model dengan Data Buatan

Sekarang, kita buat data acak untuk melatih model ini.

import numpy as np

# Data latih (1000 sampel, 10 fitur)
X_train = np.random.rand(1000, 10)
y_train = np.random.randint(0, 2, 1000)  # Label binary (0 atau 1)

# Melatih model
model.fit(X_train, y_train, epochs=10, batch_size=32)

5. Memprediksi Data Baru

Setelah dilatih, kita bisa melakukan prediksi dengan model kita.

X_new = np.random.rand(5, 10)  # 5 sampel baru
predictions = model.predict(X_new)
print(predictions)

6. Contoh Model yang Lebih Kompleks

Jika kita ingin membangun deep neural network yang lebih kompleks, kita bisa menggunakan API `Functional`.

inputs = keras.Input(shape=(10,))
x = layers.Dense(128, activation='relu')(inputs)
x = layers.Dense(64, activation='relu')(x)
x = layers.Dense(32, activation='relu')(x)
outputs = layers.Dense(1, activation='sigmoid')(x)

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

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

model.summary()

7. Membangun Model untuk Klasifikasi Multi-Kelas

Jika kita ingin membangun model untuk klasifikasi multi-kelas (contoh: 3 kelas), kita bisa menggunakan softmax sebagai aktivasi output.

model = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=(10,)),
    layers.Dense(32, activation='relu'),
    layers.Dense(3, activation='softmax')  # 3 output classes
])

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

# Data dummy untuk multi-kelas
y_train = np.random.randint(0, 3, 1000)  # Label dari 0, 1, atau 2

model.fit(X_train, y_train, epochs=10, batch_size=32)

8. Model untuk Prediksi Data Numerik (Regresi)

Jika target adalah nilai numerik, kita pakai activation linear dan loss MSE.

model = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=(10,)),
    layers.Dense(32, activation='relu'),
    layers.Dense(1)  # Tidak ada aktivasi untuk regresi
])

model.compile(optimizer='adam',
              loss='mse',  # Mean Squared Error untuk regresi
              metrics=['mae'])  # Mean Absolute Error 

y_train = np.random.rand(1000) * 100  # Target nilai antara 0-100

model.fit(X_train, y_train, epochs=10, batch_size=32)

9. Membangun Convolutional Neural Network (CNN) untuk Gambar

Untuk image classification, kita bisa menggunakan CNN.

model = keras.Sequential([
    layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)),
    layers.MaxPooling2D((2,2)),
    layers.Conv2D(64, (3,3), activation='relu'),
    layers.MaxPooling2D((2,2)),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(10, activation='softmax')  # 10 kelas (misalnya MNIST)
])

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

model.summary()

10. Membuat Recurrent Neural Network (RNN) untuk Data Urutan

Jika kita bekerja dengan data sekuensial (seperti teks atau time series), kita bisa menggunakan LSTM.

model = keras.Sequential([
    layers.Embedding(input_dim=10000, output_dim=128),
    layers.LSTM(64, return_sequences=True),
    layers.LSTM(32),
    layers.Dense(1, activation='sigmoid')  # Binary classification
])

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

model.summary()

Kesimpulan

  • Keras memudahkan kita dalam membangun model neural network dengan sedikit kode.
  • Kita bisa membuat model untuk berbagai keperluan:
    • Binary classification (aktivasi `sigmoid` dan loss `binary_crossentropy`).
    • Multi-class classification (aktivasi `softmax` dan loss `sparse_categorical_crossentropy`).
    • Regression (tanpa aktivasi di output, loss `mse`).
    • Computer vision (CNN) untuk image classification.
    • Recurrent models (RNN/LSTM) untuk text atau time-series.

Coba eksperimen dengan model di atas dan sesuaikan dengan dataset yang kamu gunakan!

Pranala Menarik