Media Belajar Bahasa Pemrograman | by APPKEY

PythonTutorial Python 41 : Serialization adalah ? Yuk Ketahui...

Tutorial Python 41 : Serialization adalah ? Yuk Ketahui Selengkapnya

-

Last Updated on March 11, 2023 by

Dalam konteks penyimpanan data, Serialization adalah proses menerjemahkan struktur data atau status objek ke dalam format yang dapat disimpan (misalnya, dalam file atau buffer memori) atau dikirim dan direkonstruksi nanti.

Pembahasan belajar Python kali ini kita akan mempelajari Serialization dan bagaimana mengoperasikannya sehingga dapat membantu kita dalam penyimpanan data. Anda akan menemukan cara menggunakan dua pustaka Serialization umum di Python untuk membuat serial objek data (yaitu pickle dan HDF5) seperti kamus dan model Tensorflow di Python untuk penyimpanan dan transmisi.

Serialization Adalah Cara Termudah Menyimpan Objek Python

serialization adalah, belajar python

Pikirkan tentang menyimpan bilangan bulat; bagaimana Anda menyimpannya dalam file atau mengirimkannya? Itu mudah! Kami cukup menulis bilangan bulat ke file dan menyimpan atau mengirimkan file itu.

Tapi sekarang, bagaimana jika kita berpikir tentang menyimpan objek Python (misalnya kamus Python atau Pandas DataFrame), yang memiliki struktur kompleks dan banyak atribut (misalnya kolom dan indeks DataFrame, dan tipe data dari setiap kolom )? Bagaimana Anda menyimpannya sebagai file atau mengirimkannya ke komputer lain?

Di sinilah Serialization diperlukan!

Serialization adalah proses mengubah objek menjadi format yang dapat disimpan atau ditransmisikan. Setelah mentransmisikan atau menyimpan data serial, kami dapat merekonstruksi objek nanti dan mendapatkan struktur/objek yang sama persis, yang membuatnya sangat nyaman bagi kami untuk terus menggunakan objek yang disimpan nanti daripada merekonstruksi objek dari awal.

Di Python, ada banyak format berbeda untuk Serialization yang tersedia. Salah satu contoh umum adalah peta hash (kamus Python) yang berfungsi di banyak bahasa adalah format file JSON yang dapat dibaca manusia dan memungkinkan kita untuk menyimpan kamus dan membuatnya kembali dengan struktur yang sama.

Tetapi JSON hanya dapat menyimpan struktur dasar seperti daftar dan kamus, dan hanya dapat menyimpan string dan angka. Kami tidak dapat meminta JSON untuk mengingat tipe data (misalnya, numpy float32 vs. float64). Itu juga tidak dapat membedakan antara tupel dan daftar Python.

Ada format Serialization yang lebih kuat. Berikut ini, kita akan menjelajahi dua pustaka Serialization umum di Python, yaitu pickle dan h5py.

Pustaka Umum Serialization Adalah Pickle

Pickle adalah proses dimana hierarki objek Python diubah menjadi aliran byte (biasanya tidak dapat dibaca manusia) untuk ditulis ke file, ini juga dikenal sebagai Serialisasi. Unpickling adalah proses kebalikannya, di mana aliran byte diubah kembali menjadi hierarki objek Python yang berfungsi.

Pickle secara operasional adalah cara paling sederhana untuk menyimpan objek. Modul Python Pickle Serialization adalah cara berorientasi objek untuk menyimpan objek secara langsung dalam format penyimpanan khusus.

Artikel Terkait  Tutorial Python 9 : Cara Membuat Looping Python

Yang Dapat Dilakukan Pickle Serialization Adalah

  • Pickle dapat menyimpan dan memproduksikembali kamus dan daftar dengan mudah.
  • Menyimpan atribut objek dan mengembalikannya kembali ke keadaan yang sama.

Apa yang tidak bisa dilakukan pickle?

  • Ia tidak menyimpan kode objek. Hanya itu nilai atribut.
  • Pickle tidak dapat menyimpan pegangan file atau soket koneksi.

Singkatnya bisa kita katakan, pickle adalah cara untuk menyimpan dan mengambil variabel data masuk dan keluar dari file di mana variabel dapat berupa daftar, kelas, dll.

Metode Pickle

Menggunakan Pustaka Pickle Python

Modul ini pickle adalah bagian dari pustaka standar Python dan mengimplementasikan metode untuk membuat serial (pengawetan) dan deserialisasi (pembongkaran) objek Python.

  • Untuk memulai pickle, impor dengan Python:
  • Setelah itu, untuk membuat serial objek Python seperti kamus dan menyimpan aliran byte sebagai file, kita dapat menggunakan dump()metode pickle.
test_dict = {"Codekey": "Python!"}

with open("test.pickle", "wb") as outfile:

  # "wb" argument membuka file dalam mode biner

pickle.dump(test_dict, outfile)
  • Aliran byte yang mewakili test_dict sekarang disimpan dalam file “ test.pickle”!
  • Untuk memulihkan objek asli, kami membaca aliran byte serial dari file menggunakan load()metode pickle.
with open("test.pickle", "rb") as infile:

  test_dict_reconstructed = pickle.load(infile)

Menyatukannya, kode berikut membantu Anda memverifikasi bahwa pickle dapat memulihkan objek yang sama :

import pickle

 

# Objek tes

test_dict = {"Codekey": "Python!"}

 

# Serialization

with open("test.pickle", "wb") as outfile:

    pickle.dump(test_dict, outfile)

print("Written object", test_dict)

 

# Deserialization

with open("test.pickle", "rb") as infile:

    test_dict_reconstructed = pickle.load(infile)

print("Reconstructed object", test_dict_reconstructed)

 

if test_dict == test_dict_reconstructed:

    print("Rekonstruksi sukses")
  • Selain menulis objek berseri ke dalam file pickle, kita juga bisa mendapatkan objek berseri sebagai tipe byte-array di Python menggunakan fungsi pickle dumps():
test_dict_ba = pickle.dumps(test_dict)      # b'\x80\x04\x95\x15…
  • Demikian pula, kita dapat menggunakan metode pickle load untuk mengonversi dari tipe byte-array kembali ke objek aslinya :
test_dict_reconstructed_ba = pickle.loads(test_dict_ba)

Satu hal yang berguna tentang Pickle Serialization adalah ia dapat membuat cerita bersambung hampir disemua objek Python, termasuk yang ditentukan pengguna, seperti berikut ini:

import pickle

 

class NewClass:

    def __init__(self, data):

        print(data)

        self.data = data

 

# Buat objek NewClass

new_class = NewClass(1)

 

# Serialize and deserialize

pickled_data = pickle.dumps(new_class)

reconstructed = pickle.loads(pickled_data)

 

# Verify

print("Data from reconstructed object:", reconstructed.data)

Perhatikan bahwa pernyataan print dalam konstruktor kelas tidak dijalankan pada saat pickle.loads() dipanggil. Ini karena ia merekonstruksi objek, bukan membuatnya kembali.

  • Pickle bahkan dapat membuat serialisasi fungsi Python karena fungsi adalah objek kelas satu di Python :
import pickle

 

def test():

    return "Hello world!"

 

# Serialize and deserialize

pickled_function = pickle.dumps(test)

reconstructed_function = pickle.loads(pickled_function)

 

# Verify

print (reconstructed_function()) #prints “Hello, world!”

Oleh karena itu, kita dapat memanfaatkan pickle untuk menghemat pekerjaan kita. Misalnya, model yang dilatih dari Keras atau scikit-learn dapat diserialkan dengan pickle dan dimuat nanti alih-alih melatih ulang model setiap kali kita menggunakannya.

Berikut ini menunjukkan kepada Anda bagaimana kami dapat membangun model LeNet5 untuk mengenali digit tulisan tangan MNIST menggunakan Keras, kemudian membuat serial model yang dilatih menggunakan pickle. Setelah itu, kita dapat merekonstruksi model tanpa melatihnya kembali, dan seharusnya menghasilkan hasil yang persis sama dengan model aslinya:

import pickle

 

import numpy as np

import tensorflow as tf

from tensorflow.keras.datasets import mnist

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Conv2D, Dense, AveragePooling2D, Dropout, Flatten

from tensorflow.keras.utils import to_categorical

from tensorflow.keras.callbacks import EarlyStopping

 

# Load digit MNIST

(X_train, y_train), (X_test, y_test) = mnist.load_data()

 

# Bentuk ulang data menjadi (n_samples, height, wiedth, n_channel)

X_train = np.expand_dims(X_train, axis=3).astype("float32")

X_test = np.expand_dims(X_test, axis=3).astype("float32")

 

# Enkode output

y_train = to_categorical(y_train)

y_test = to_categorical(y_test)

 

# LeNet5 model

model = Sequential([

    Conv2D(6, (5,5), input_shape=(28,28,1), padding="same", activation="tanh"),

    AveragePooling2D((2,2), strides=2),

    Conv2D(16, (5,5), activation="tanh"),

    AveragePooling2D((2,2), strides=2),

    Conv2D(120, (5,5), activation="tanh"),

    Flatten(),

    Dense(84, activation="tanh"),

    Dense(10, activation="softmax")

])

 

# Melatih model

model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])

earlystopping = EarlyStopping(monitor="val_loss", patience=4, restore_best_weights=True)

model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=100, batch_size=32, callbacks=[earlystopping])

 

# Evaluasi model

print(model.evaluate(X_test, y_test, verbose=0))

 

# Serialize and deserialize untuk pickel

pickled_model = pickle.dumps(model)

reconstructed = pickle.loads(pickled_model)

 

# Evaluasi kembali

print(reconstructed.evaluate(X_test, y_test, verbose=0))

Meskipun pickle Serialization adalah perpustakaan yang kuat, pickle masih memiliki batasannya sendiri untuk pickle. Misalnya, koneksi langsung seperti koneksi database dan pegangan file yang dibuka tidak dapat diacak.

Artikel Terkait  Tutorial Python 34 : Mengenal Socket Programming pada Python

Masalah ini muncul karena merekonstruksi objek-objek ini memerlukan pickle untuk membangun kembali koneksi dengan database/file, yang merupakan sesuatu yang tidak dapat dilakukan oleh pickle untuk Anda (karena memerlukan kredensial yang sesuai dan berada di luar cakupan yang dimaksudkan untuk pickle).

Bantuan Termudah Serialization Adalah HDF5

serialization adalah, belajar python

Hierarchical Data Format 5 (HDF5) adalah format data biner. Paket tersebut h5py adalah pustaka Python yang menyediakan antarmuka ke format HDF5. Dari h5py dokumen, HDF5 “memungkinkan Anda menyimpan data numerik dalam jumlah besar, dan dengan mudah memanipulasi data tersebut dari Numpy”.

Apa yang dapat dilakukan HDF5 lebih baik daripada format lain serialization adalah menyimpan data dalam hierarki seperti sistem file. Anda dapat menyimpan banyak objek atau kumpulan data di HDF5, seperti menyimpan banyak file di sistem file. Anda juga dapat membaca kumpulan data tertentu dari HDF5, seperti membaca satu file dari sistem file tanpa mempedulikan yang lain. Jika Anda menggunakan pickle untuk ini, Anda harus membaca dan menulis semuanya setiap kali Anda memuat atau membuat file pickle. Karenanya HDF5 menguntungkan untuk sejumlah besar data yang tidak dapat masuk sepenuhnya ke dalam memori.

  • Untuk memulai h5py, pertama-tama Anda harus menginstal h5pypustaka, yang dapat Anda lakukan dengan menggunakan PIP Instal
  • Atau, Anda dapat menggunakan conda jika memulai dengan lingkungan conda:
  • Kita kemudian dapat memulai dengan membuat kumpulan data pertama kita!
import h5py

with h5py.File("test.hdf5", "w") as file:

    dataset = file.create_dataset("test_dataset", (100,), type="i4")

sintaks di atas membuat dataset baru dalam file test.hdf5 bernama “ test_dataset,” dengan bentuk (100, ) dan tipe int32. h5py kumpulan data mengikuti sintaks Numpy sehingga Anda dapat melakukan pemotongan, pengambilan, mendapatkan bentuk, dll., mirip dengan array Numpy.

  • Untuk mengambil indeks tertentu:
dataset[0]  # Mengambil elemen pada indeks 0 dari dataset
  • Untuk membaca dari file HDF5 yang dibuat sebelumnya, Anda dapat membuka file di ” r” untuk mode baca atau ” r+” untuk mode baca/tulis :
with h5py.File("test.hdf5", "r") as file:

    print (file.keys()) # Mendapat nama kumpulan data yang ada di file

    dataset = file["test_dataset"]
  • Untuk mengatur file HDF5 Anda, Anda dapat menggunakan grup:
with h5py.File("test.hdf5", "w") as file:

    # Membuat group_1 baru dalam file

    file.create_group("group_1")

    group1 = file["group_1"]

    # Membuat dataset di dalam grup1

    group1.create_dataset("dataset1", shape=(10,))

    # Akses dataset

    dataset = file["group_1"]["dataset1"]

 

Artikel Terkait  Tutorial Python 16 : Mengenal Python Generators

Cara lain untuk membuat grup dan file adalah dengan menentukan jalur ke kumpulan data yang ingin Anda buat, dan h5py akan membuat grup di jalur tersebut juga (jika tidak ada):

with h5py.File("test.hdf5", "w") as file:

    # Membuat dataset dalam group1

    file.create_dataset("group1/dataset1", shape=(10,))

Format JSON

Ada dua format dasar untuk data JSON. Baik dalam string atau struktur data objek. Struktur data objek, dengan Python, terdiri dari daftar dan kamus yang bersarang di dalam satu sama lain. Struktur data objek memungkinkan seseorang untuk menggunakan metode python (untuk daftar dan kamus) untuk menambah, mendaftar, mencari, dan menghapus elemen dari struktur data. Format String terutama digunakan untuk meneruskan data ke program lain atau memuat ke dalam struktur data.

  • Untuk memuat kembali JSON ke struktur data, gunakan metode “Loads”. Metode ini mengambil string dan mengubahnya kembali menjadi struktur data objek json :
import json

print(json.loads(json_string))
  • Untuk membuat kode struktur data ke JSON, gunakan metode “dumps”. Metode ini mengambil objek dan mengembalikan sebuah String:
import json

json_string = json.dumps([1, 2, 3, "a", "b", "c"])

print(json_string)
  • Tujuan dari latihan ini adalah untuk mencetak string JSON dengan key-value pair “Me” : 800 ditambahkan ke dalamnya.
import json

 

# perbaiki fungsi ini, sehingga menambahkan nama yang diberikan

# dan pasangan gaji ke salaries_json, dan mengembalikannya

def add_employee(salaries_json, name, salary):

    # Tambahkan code anda disini

 

    return salaries_json

 

# tes code

salaries = '{"Joe" : 300, "Danil" : 400 }'

new_salaries = add_employee(salaries, "Me", 800)

decoded_salaries = json.loads(new_salaries)

print(decoded_salaries["Alfred"])

print(decoded_salaries["Jane"])

print(decoded_salaries["Me"])

Membandingkan Antara Berbagai Metode Serialisasi

Di atas, kita melihat bagaimana pickle Hdf5 dapat membantu membuat serialisasi data Python kita.

Kita dapat menggunakan pickle untuk membuat cerita bersambung hampir semua objek Python, termasuk objek dan fungsi yang ditentukan pengguna. Tapi pickle bukanlah agnostik bahasa. Anda tidak dapat melepaskannya di luar Python. Bahkan ada 6 versi pickle yang dikembangkan sejauh ini, dan Python yang lebih lama mungkin tidak dapat menggunakan data pickle versi yang lebih baru.

Sebaliknya, HDF5 Serialization adalah lintas platform dan bekerja dengan baik dengan bahasa lain seperti Java dan C++. Di Python, h5py perpustakaan mengimplementasikan antarmuka Numpy untuk mempermudah manipulasi data. Data dapat diakses dalam bahasa yang berbeda karena format HDF5 hanya mendukung tipe data Numpy seperti float dan string. Kami tidak dapat menyimpan objek arbitrer seperti fungsi Python ke dalam HDF5.

JSON (JavaScript Objek Notation) telah menjadi bagian dari pustaka standar Python adalah format pertukaran data yang ringan. Sangat mudah bagi orang untuk membaca dan menulis. Sangat mudah untuk mengurai dan menghasilkan.

Temukan lebih banyak artikel seri belajar Python maupun bahasa pemrograman lainnya hanya di CODEKEY. Klik https://codekey.id/ sekarang juga untuk langsung belajar gratis. Sampai bertemu lagi!


Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.

Jasa Pembuatan Aplikasi

Jasa Pembuatan Website

Jasa Pembuatan Paket Aplikasi

Jasa Pembuatan Internet Marketing

Tutorial

Subscribe Sekarang

Dapatkan beragam informasi menarik tentang bahasa pemrograman langsung melalui email Anda. Subscribe sekarang dan terus belajar bersama kami!

Blog Post Ranking 10

Tutorial PHP 22 : Cara Membuat Redirect PHP dengan Cepat dan Mudah

Jika Anda melakukan browsing di browser kesayangan Anda, mungkin Anda pernah melihat link yang berisikan “php redirect” atau yang...

Tutorial PHP 23 : Cara Membuat Messages Alert PHP

Alert box atau alert messages digunakan di situs web untuk menampilkan pesan peringatan kepada pengguna bahwa mereka telah memasukkan...

Tutorial PHP 2 : Cara Install PHP, Langkah Awal Belajar PHP

PHP adalah bahasa pemrograman gratis dan open source. Secara teknis tidak perlu menginstal PHP: sebagian besar host web dan...

Tutorial Python 9 : Cara Membuat Looping Python

Pada artikel sebelumnya, Codekey telah menjelaskan tentang Operasi Kondisional Python yang di dalamnya menyinggung tentang percabangan dan perulangan. Belajar...

Tutorial HTML/CSS 23 : Cara Membuat Form Sederhana dengan HTML

Form memiliki peran yang sangat krusial bagi website atau aplikasi untuk menjaga sistem keamanannya. Form HTML digunakan untuk mengumpulkan...

Tutorial SQL 8 : Constraint SQL, Bagaimana Fungsi dan Penggunaannya?

Pada artikel sebelumnya Anda telah mempelajari tentang wildcard SQL, pada artikel kali ini kami akan menjelaskan tentang constraint SQL. Jika...

Tutorial Javascript 8 : Array Javascript, Panduan Lengkap Cara Membuatnya

Seperti bahasa pemrograman yang berorientasi objek lainnya, dalam JavaScript juga terdapat array. Jika Anda memiliki banyak objek yang ingin...

Tutorial SQL 20 : Mari Pelajari Cara Menggunakan Fungsi GROUP by SQL

Pada pembahasan seri Tutorial SQL ke- 20 ini, Codekey akan membahas tentang GROUP BY yang merupakan statement di dalam...

Tutorial Python 7 : Python String Format dan Cara Mudahnya

Anda ingin belajar Python dan ingin menjadi ahli dalam bahasa pemrograman Python? Mari belajar bersama Codekey! Pada pembahasan kali...

Tutorial Python 8 : Langkah Mudah Membuat Operasi Kondisional pada Python

Pada pembahasan sebelumnya, Codekey telah menjelaskan kepada Anda tentang pengoperasian string pada Python mulai dari menggabungkan hingga memanipulasi string...

Bisnis

Online Service

Peluang Bisnis

Model Bisnis

Entrepreneurship

Uang

Ketrampilan

Outsourcing

Monetize

Pemasaran

SEO

Internet Marketing

Dasar Pemasaran

Strategi Pemasaran

Situs Web Analitik

Iklan

Teknologi

Teknologi Terbaru

AI

Komputer

Jaringan

Paling Sering dibaca
Mungkin Anda Menyukainya