Chào mừng đến với BIS Đăng nhập | Đăng ký | Trợ giúp
trong Tìm kiếm

Hướng dẫn triển khai Deep learning model với Keras

Bài cuối 07-25-2018 02:11 PM của chucnv. 0 trả lời.
Trang 1 trong số 1 (1 nội dung)
Sắp xếp bài viết: Trước Tiếp theo
  • 07-25-2018 02:11 PM

    • chucnv
    • 10 thành viên năng nổ nhất
    • Tham gia 12-05-2008
    • Điểm 9,935

    Hướng dẫn triển khai Deep learning model với Keras

    Hướng dẫn triển khai Deep learning model với Keras

    chuc1803@gmail.com

     Deep learning  là một lĩnh vực chuyên sâu của Machine Leaning. Deep learning  sử dụng một số kỹ thuật của Machine Learning để giải quyết các vấn đề thực tế bằng cách khai thác khả năng của các neural network nhiều lớp ẩn. Deep learning hiện nay đang được nghiên cứu và triển khai mạnh mẽ bởi kết quả chính xác cao. Hiểu một cách đơn giản DEEP LEARNING = LEARNING BASED ON DEEP NEURAL NETWORK.

    Keras là thư viên rất mạnh và dễ sử dụng của Python để phát triển và đánh giá các deep learning models. Keras kết hợp với Tensorflow (backend) cho phép triển khai các deep neural network models chỉ với vài dòng lệnh.

    Bài viết này giới thiệu từng bước để sử dụng Keras triển khai một Deep Learning model.

    Yêu cầu:

    Softwares:

    1.     Cài đặt Python (nên dùng môi trường anaconda)

    2.     Cài đặt Keras

    C:\Users\chucnv>conda install -c conda-forge keras

     

    3.     Cài đặt Tensorflow

    C:\Users\chucnv>conda install -c anaconda tensorflow-gpu


     

    Dataset: Data sử dụng minh họa về indians diabetes (về bệnh đái tháo đường) được cho trên github. Download và xem giải thích dataset tại  các link sau:

    Dataset File

    Dataset Details

    Các bước triển khai như sau:

    1.     Load Data.

    2.     Define Model.

    3.     Deploy Model.

    4.     Fit Model.

    5.     Evaluate Model

    6.     Make Prediction

    1.  Importing requirement packages and Loading dataset

    # Importing requirement packages

    from keras.models import Sequential

    from keras.layers import Dense

    import numpy

    # fix random seed for reproducibility

    numpy.random.seed(7)

    # load indians diabetes dataset

    dataset = numpy.loadtxt("D:/Python_Pro/diabetes.csv", delimiter=",")

    # split into input (X) and output (Y) variables

    X = dataset[:,0:8]

    Y = dataset[:,8]

    2. Define Model

    Models trong Keras được định nghĩa như là một sequence of layers. Vì vậy chúng ta tạo một  Sequential model và thêm các layers cho đến khi chúng ta được một model có kết quả mong muốn. Trong ví dụ này sử dụng cấu trúc fully-connected network với 3 layers. Fully connected layers được định nghĩa bằng cách sử dụng Dense class. Chúng ta có thể xác định số neurons trong layer, initialization method và activation function cho Model. Trong trường hợp này, khởi tạo network weights bằng các số ngẫu nhiên nhỏ (từ 0 đến 0.5) bằng cách sử dụng uniform distribution (‘uniform‘). Một cách khác thường dùng để khởi tạo network weights  là Gaussian distribution. Chúng ta sẽ sử dụng hàm kích hoạt (activation function)  rectifier linear unit (‘relu‘) cho 2 layers đầu tiên của network và sigmoid function cho output layer. sigmoid trên output layer để đảm bảo rằng output chỉ nằm trong khoảng 0 và 1 với threshold là  0.5 để dễ dàng mapping kết quả của network là 1 (bị bệnh đái tháo đường) và 0 (không bị bệnh). Layer đầu tiên gồm 12 neurons và 8 input variables, layers thứ 2 gồm 8 neurons, output layers gồm 1 neuron để dự đoán bệnh(1: có bệnh, 0: không có bệnh)

    # create model

    model = Sequential()

    model.add(Dense(12, input_dim=8, activation='relu'))

    model.add(Dense(8, activation='relu'))

    model.add(Dense(1, activation='sigmoid'))

    3. Deploy Model

    Sau khi đã define model, bây giờ chúng ta có thể deploy model

    Deploy model sử dụng các thư viện phía backend của TensorFlow. Phía backend sẽ tự động chọn cách để training model sao cho hiệu quả nhất (như việc chọn chạy trên CPU hoặc GPU hoặc thậm chí trên các hệ thống phân tán). Training model có nghĩa là tìm ra tập trọng số (network weights) tốt nhất của model để dự đoán. Khi deploy model chúng ta phải xác định loss function để đánh giá tập trọng số. Trong trường hợp này chúng ta sử dụng logarithmic loss cho phân lớp nhị phân (binary classification) được định nghĩa trong Keras là  “binary_crossentropy“. Sử dụng gradient descent algorithm “adam” để tối ưu.

    # Deploying model

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

    4. Fit Model

    Sau khi đã deploy model, gọi hàm fit(), quá trình training (training process) sẽ được thực hiện lặp lại với số lần lặp xác định trên dataset (gọi là epochs), trong quá trình này cũng phải xác định số instannces dùng để evaluate model trước khi cập nhật network weights, tham số này gọi là batch_size. Trong ví dụ này, sẽ chạy với số lần lặp nhỏ (epochs =150) và batch_size là 10

    # Fit the model

    model.fit(X, Y, epochs=150, batch_size=10)

    5. Evaluate Model

    Sau khi đã train neural network trên toàn bộ dataset, bây giờ đánh giá hiệu quả của model.

    # evaluate the model

    scores = model.evaluate(X, Y)

    print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))

    6. Make Predictions

    Sau khi fit model, có thể sử dụng model.predict() để dự đoán

    # calculate predictions

    predictions = model.predict(X)

    # round predictions

    rounded = [round(x[0]) for x in predictions]

    print(rounded)

    ---

    Download code file tại ĐÂY

    Xem Video tại Đây

    Xem thêm video Deep learning model (advanced) tại đây
    • Điểm chủ đề: 20
Trang 1 trong số 1 (1 nội dung)
Powered by Community Server (Commercial Edition), by Telligent Systems