Mạng nơ-ron Deep Learning đầu tiên của tôi sử dụng Tensorflow

  1. Trí tuệ nhân tạo

Mạng nơ-ron Deep Learning đầu tiên của tôi sử dụng Tensorflow

Tôi muốn viết một mạng nơ-ron đơn giản với 3 hoặc 4 hiddlen layer sử dụng tensorflow. Tôi đã sử dụng IDE Pycharm và python với tensorflow cho data và sử dụng mạng nơ-ron.

Và đây là code chi tiết. Trước khi chạy, hãy update pycharm và cài đặt tensorflow vào môi trường ảo.

import os

import tensorflow as tf

import pandas as pd

from sklearn.preprocessing import MinMaxScaler

#Tải dữ liệu từ file csv

training_data_df = pd.read_csv(“sales_data_training.csv”, dtype=float)

# Tải dữ liệu X là dữ liệu train, Y là dẽ liệu predict

X_training = training_data_df.drop(‘total_earnings’, axis=1).values

Y_training = training_data_df[[‘total_earnings’]].values

# Tải dữ liệu test từ file csv

test_data_df = pd.read_csv(“sales_data_test.csv”, dtype=float)

# Tương tự tải dữ liệu X và Y như trên

X_testing = test_data_df.drop(‘total_earnings’, axis=1).values

Y_testing = test_data_df[[‘total_earnings’]].values

# dữ liệu đầu vào cần phải đưa về khoảng 0 đến 1

X_scaler = MinMaxScaler(feature_range=(0, 1))

Y_scaler = MinMaxScaler(feature_range=(0, 1))

# Scale dữ liệu trainning cả input và output.

X_scaled_training = X_scaler.fit_transform(X_training)

Y_scaled_training = Y_scaler.fit_transform(Y_training)

#Cần phải làm tương tự cho cả tập test.

X_scaled_testing = X_scaler.transform(X_testing)

Y_scaled_testing = Y_scaler.transform(Y_testing)

# Định nghĩa một số parameters

learning_rate = 0.001

training_epochs = 100

# Định nghĩa số lượng đầu vào và đầu ra.

number_of_inputs = 9

number_of_outputs = 1

# Định nghĩa số lượng node cho từng layer của mạng.

layer_1_nodes = 50

layer_2_nodes = 100

layer_3_nodes = 50

# Section One:Định nghĩa layers của mạng nơ-ron.

# Input Layer

with tf.variable_scope(‘input’):

 X = tf.placeholder(tf.float32, shape=(None, number_of_inputs))

# Layer 1

with tf.variable_scope(‘layer_1’):

 weights = tf.get_variable(“weights1”, shape=[number_of_inputs, layer_1_nodes], initializer=tf.contrib.layers.xavier_initializer())

 biases = tf.get_variable(name=”biases1", shape=[layer_1_nodes], initializer=tf.zeros_initializer())

 layer_1_output = tf.nn.relu(tf.matmul(X, weights) + biases)

# Layer 2

with tf.variable_scope(‘layer_2’):

 weights = tf.get_variable(“weights2”, shape=[layer_1_nodes, layer_2_nodes], initializer=tf.contrib.layers.xavier_initializer())

 biases = tf.get_variable(name=”biases2", shape=[layer_2_nodes], initializer=tf.zeros_initializer())

 layer_2_output = tf.nn.relu(tf.matmul(layer_1_output, weights) + biases)

# Layer 3

with tf.variable_scope(‘layer_3’):

 weights = tf.get_variable(“weights3”, shape=[layer_2_nodes, layer_3_nodes], initializer=tf.contrib.layers.xavier_initializer())

 biases = tf.get_variable(name=”biases3", shape=[layer_3_nodes], initializer=tf.zeros_initializer())

 layer_3_output = tf.nn.relu(tf.matmul(layer_2_output, weights) + biases)

# Output Layer

with tf.variable_scope(‘output’):

 weights = tf.get_variable(“weights4”, shape=[layer_3_nodes, number_of_outputs], initializer=tf.contrib.layers.xavier_initializer())

 biases = tf.get_variable(name=”biases4", shape=[number_of_outputs], initializer=tf.zeros_initializer())

 prediction = tf.matmul(layer_3_output, weights) + biases

# Section Two: Định nghĩa hàm chi phí, và đo độ chính xác suốt quá trình training.

with tf.variable_scope(‘cost’):

 Y = tf.placeholder(tf.float32, shape=(None, 1))

 cost = tf.reduce_mean(tf.squared_difference(prediction, Y))

# Section Three: Định nghĩa hàm tối ưu

with tf.variable_scope(‘train’):

 optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)

# Tạo một phương thức để ghi lại tiến độ của mạng.

with tf.variable_scope(‘logging’):

 tf.summary.scalar(‘current_cost’, cost)

 summary = tf.summary.merge_all()

# Khởi tạo một session để có thể chạy Tensorflow.

with tf.Session() as session:

# Chạy khởi tạo biến toàn cục để khởi tạo các biến và các lớp của mạng nơ-ron.

 session.run(tf.global_variables_initializer())

# Tạo file log để ghi lại tiến độ chạy

 # Lưu trữ để kiểm tra quá trình training riêng biệt.

 training_writer = tf.summary.FileWriter(‘./logs/training’, session.graph)

 testing_writer = tf.summary.FileWriter(‘./logs/testing’, session.graph)

# Chạy chương trình tối ưu hóa để train mạng.

 for epoch in range(training_epochs):

# Cung cấp nguồn cấp dữ liệu cho dữ liệu khi đưa vào training

 session.run(optimizer, feed_dict={X: X_scaled_training, Y: Y_scaled_training})

# Mỗi 5 training steps,in ra quá trình

 if epoch % 5 == 0:

 # Lấy chi phí hiện tại bằng cách chạy thao tác "cost" trên tập train và test.

 training_cost, training_summary = session.run([cost, summary], feed_dict={X: X_scaled_training, Y:Y_scaled_training})

 testing_cost, testing_summary = session.run([cost, summary], feed_dict={X: X_scaled_testing, Y:Y_scaled_testing})

# Viết lại trạng thái vào file (chúng ta có thể xem bằng TensorBoard)

 training_writer.add_summary(training_summary, epoch)

 testing_writer.add_summary(testing_summary, epoch)

# In quá trình training hiện tại

 print(“Epoch: {} — Training Cost: {} Testing Cost: {}”.format(epoch, training_cost, testing_cost))

# Kết thúc training

#Lấy chi phí cuối cùng

 final_training_cost = session.run(cost, feed_dict={X: X_scaled_training, Y: Y_scaled_training})

 final_testing_cost = session.run(cost, feed_dict={X: X_scaled_testing, Y: Y_scaled_testing})

print(“Final Training cost: {}”.format(final_training_cost))

 print(“Final Testing cost: {}”.format(final_testing_cost))

# Model đã được train hãy lấy nó để đoán ra bộ dữ liệu trong tập test của chúng ta.

 # giờ thì chạy hoạt động "prediction"

 Y_predicted_scaled = session.run(prediction, feed_dict={X: X_scaled_testing})

# Trả lại dữ liệu về trạng thái trước đó (unscale)

 Y_predicted = Y_scaler.inverse_transform(Y_predicted_scaled)

real_earnings = test_data_df[‘total_earnings’].values[0]

 predicted_earnings = Y_predicted[0][0]

print(“The actual earnings of Game #1 were ${}”.format(real_earnings))

 print(“Our neural network predicted earnings of ${}”.format(predicted_earnings))

Trên đây chỉ là một mạng nơ-ron đơn giản và không tối ưu hóa. Bài viết này sẽ giúp bạn bắt đầu với việc học deep learning. Hãy vui vẻ và bắt đầu với tensorflow và deep learning

Tham khảo: Writing My first Deep Learning neural network using Tensorflow

Từ khóa: 

trí tuệ nhân tạo