BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI BÁO CÁO THÍ NGHIỆMTHỰC NGHIỆM HỌC PHẦN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI ỨNG DỤNG THUẬT TOÁN CNN VÀ KERAS VÀO PHÂN BIỆT CHÓ VÀ MÈO Tìm hiểu về thuật toán CNN và Keras
Trang 1BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
BÁO CÁO THÍ NGHIỆM/THỰC NGHIỆM
HỌC PHẦN: TRÍ TUỆ NHÂN TẠO
ĐỀ TÀI:
ỨNG DỤNG THUẬT TOÁN CNN VÀ KERAS
VÀO PHÂN BIỆT CHÓ VÀ MÈO
Sinh viên thực hiện: Dương Trung Kiên 2020604160
Trang 2Chương I Tìm hiểu về thuật toán CNN 2
1 Giới Thiệu mạng CNN 2
2 Những lớp cơ bản của mạng CNN 3
3 Kiến trúc của mạng CNN 5
4 Cách lựa chọn tham số của mạng CNN 7
Chương 2 Tìm hiểu về thư viện lớn TensorFlow 8
1. Lịch sử ra đời của TensorFlow 8
2. Ví dụ TensorFlow đơn giản 14
3. Các option tải dữ liệu vào TensorFlow 16
Chương 3 Tìm hiểu về thư viện Keras 19
1 Giới thiệu về thư viện Keras 19
2 MNIST Dataset 23
3 Ứng dụng của việc phân loại ảnh 30
Chương 4 Ứng dụng nhận diện chó mèo 30
1. Giới thiệu về dự án 30
2 Bộ dữ liệu Asirra (Chó và Mèo) 31
3 Các bước xây dựng ứng dụng 31
4 GUI phân loại chó mèo 39
5 Bản tóm tắt 41
Tài Liệu Tham Khảo 41
Trang 3LỜI MỞ ĐẦU
Hiện nay, việc ứng dụng trí tuệ nhân tạo vào nhận diện sự vật quanh ta đang cực
kì phổ biến và phát triển, đặc biệt là những thứ thân thuộc, gần gũi với cuộc sống con người Chính vì lý do đó mà chúng em đã quyết định lựa chọn phát triển phần mềm nhận diên cho hoặc mèo và có thể nâng cấp lên nhận diên nhiều động vật và
đồ vật khác để làm để tài cho bài tập lớn môn trí tuệ nhân tạo Đây là tài liệu dùng
để nhận diện chó hoặc mèo dựa trên hình ảnh đã được cung cấp Trong game có sử dụng thuật toán CNN KERAS Tài liệu này giúp ta có một cái nhìn tổng quát về việc áp dụng thuật toán vào phần mềm phân biệt chó hoặc mèo thông qua hình ảnh
đã được cung cấp sẵn
Em xin chân thành cảm ơn cô giáo Ths Nguyễn Lan Anh đã trang bị cho em những kiến thức cần thiết qua môn “Trí tuệ nhân tạo” để có thể hoàn thành dự án này
Tuy nhiên do thời gian cùng với trình độ hiểu biết còn hạn hẹp nên khó tránh khỏi những thiếu sót Rất mong nhận được sự đóng góp của quý thầy cô và các bạn
để dự án được hoàn thiện hơn
Xin chân thành cảm ơn!
CHƯƠNG 1: Tìm hiểu về thuật toán CNN?
Trang 41 Giới thiệu về mạng CNN
CNN là từ viết tắt của cụm Convolutional Neural Network hay là mạng nơron tích chập Đây là mô hình vô cùng tiên tiến được áp dụng nhiều trong lĩnh vựchọc sâu Deep learning Mạng CNN cho phép người dùng xây dựng những hệ thốngphân loại và dự đoán với độ chính xác cực cao Hiện nay, mạng CNN được ứngdụng nhiều hơn trong xử lý ảnh, cụ thể là nhận diện đối tượng trong ảnh
Mạng CNN là gì?
* Convolutional trong CNN
Đây là một “cửa sổ” sử dụng trượt trên ma trận nhằm lấy được những thôngtin chính xác và cần thiết nhất mà không phải chọn đặc trưng (feature)
Trang 5Convolution hay nhân tích chập là cách mà những lớp Convolutional này nhânnhững phần tử trong ma trận Sliding Window hay kernel là dạng ma trận có kíchthước nhỏ, sử dụng trong nhân tích chập với ma trận hình ảnh
* Feature trong CNN
Feature là đặc trưng, mạng CNN sẽ so sánh dựa vào từng mảnh và các mảnhnhư vậy được gọi là feature Thay vì phải tiến hành khớp các bức ảnh lại với nhauthì mạng CNN sẽ xác định được sự tương đồng thông qua tìm kiếm thô những đặctrưng khớp với nhau bằng hai hình ảnh tốt hơn Một feature là mộ hình ảnh dạngmini (những mảng 2 chiều nhỏ) Những feature này đều tương ứng với một khíacạnh nào đó của hình ảnh và chúng có thể khớp lại được với nhau
2 Những lớp cơ bản của mạng CNN là gì?
Mạng CNN bảo gồm những lớp cơ bản sau:
* Convolutional layer
Lớp này là phần quan trọng nhất của toàn mạng CNN, nó có nhiệm vụ thực thicác tính toán Các yếu tố quan trọng trong lớp Convolutional là: padding, stride,feature map và filter map
• Mạng CNN sử dụng filter để áp dụng vào các vùng của ma trận hình ảnh.Các filter map là các ma trận 3 chiều, bên trong đó là những tham số vàchúng được gọi là parameters tride tức là bạn dịch chuyển filter map theotừng pixel dựa vào các giá trị từ trái qua phải
• Padding: Thường, giá trị viền xung quanh của ma trận hình ảnh sẽ đượcgán các giá trị 0 để có thể tiến hành nhân tích chập mà không làm giảmkích thước ma trận ảnh ban đầu
• Feature map: Biểu diễn kết quả sau mỗi lần feature map quét qua ma trậnảnh đầu vào Sau mỗi lần quét thì lớp Convolutional sẽ tiến hành tínhtoán
Trang 6Convolutional layer
* Relu Layer
Lớp ReLU này là hàm kích hoạt trong mạng CNN, được gọi là activationfunction Nó có tác dụng mô phỏng những nơ ron có tỷ lệ truyền xung qua axon.Các hàm activation khác như Leaky, Sigmoid, Leaky, Maxout, tuy nhiên hiện nay,hàm ReLU được sử dụng phổ biến và thông dụng nhất
Hàm này được sử dụng cho những yêu cầu huấn luyện mạng nơ ron với những ưuđiểm nổi bật điển hình là hỗ trợ tính toán nhanh hơn Trong quá trình dùng hàmReLU, bạn cần chú ý đến việc tùy chỉnh những learning rate và dead unit Nhữnglớp ReLU được dùng sau khi filter map được tính và áp dụng ReLU lên các giá trịcủa filter map
Pooling layer
Khi ma trận ảnh đầu vào có kích thước quá lớn, các lớp Pooling layer sẽ được đặtvào giữa những lớp Convolutional để làm giảm những parameters Hiện, hai loạilớp Pooling được sử dụng phổ biến là Max pooling và Average
Trang 7Pooling Layer
* Fully connected layer
Đây là lớp có nhiệm vụ đưa ra kết quả sau khi hai lớp Convolutional và Pooling đảnhận được ảnh truyền Khi này, ta sẽ thu được một model đọc được thông tin củaảnh Để có thể liên kế chúng cũng như cho nhiều đầu ra hơn ta sẽ sử dụng Fullyconnected layer
Ngoài ra, nếu lớp này có dữ liệu hình ảnh thì lớp sẽ chuyển chúng thành các muchchưa được phân chia chất lượng để tìm ra ảnh có chất lượng cao nhất
3 Kiến trúc của mạng CNN là gì?
Mạng CNN là gì? Đó là tập hợp những Convolutional layer xếp chồng lênnhau, đồng thời mạng sử dụng những hàm như ReLU và Tanh để kích hoạt cáctrọng số trong các node Các lớp này sau khi qua các hàm activation sẽ có trọng sốtrong những node và có thể tạo ra những thông tin trừu tượng hơn đến với các lớp
kế tiếp trong mạng
Trang 8Mạng CNN có tính kết hợp cà tính bất biến Tức là, nếu cùng một đối tượng mà sửdụng chiếu theo các góc độ khác nhau thì sẽ có ảnh hưởng đến độ chính xác Vớidịch chuyển, co giãn hay quay ma trận ảnh thì lớp Pooling sẽ được dùng để hỗ trợlàm bất biến các tính chất này Chính vì vậy mà mạng CNN sẽ đưa ra những kếtquả có độ chính xác tương ứng với từng mô hình.
Trong đó, lớp Pooling sẽ có khả năng tạo tính bất biến với phép dịch chuyển,
co giãn và quay Còn tính kết hợp cục bộ sẽ cho thấy những cấp độ biểu diễn, dữliệu từ thấp đến cao với mức trừu twuongj thông qua Convolution từ filter MạngCNN có những lớp liên kết nhau dựa vào cơ chế Convolution
Các lớp tiếp theo sẽ là kết quả từ những lớp trước đó, vì vậy mà bạn sẽ cónhững liên kết cục bộ phù hợp nhất Trong quá trình huấn luyện mạng, CNN sẽ tựhọc hỏi những giá trị thông qua filter layer dựa theo cách thức mà bạn thực hiện
Cấu trúc cơ bản của một mô hình mạng CNN thường bao gồm 3 phần chính baogồm:
• Trường cục bộ/ Local receptive field: Lớp này sử dụng để tách lọc dữliệu, thông tin hình ảnh để từ đó có thể lựa chọn các vùng có giá trị sửdụng hiệu quả cao nhất
• Trọng số chia sẻ/ Shared weights and bias: Lớp này hỗ trợ làm giảm cáctham số đến mức tối thiểu trong mạng CNN Trong từng lớp convolutionsẽ chứa các feature map riêng và từng feature thì sẽ có khả năng phát hiệnmột vài feature trong hình ảnh
• Lớp tổng hợp/ Pooling layer: Đây là lớp cuối cùng và sử dụng để làm đơngiản các thông tin output Tức là, sau khi tính toán xong và quét qua cáclayer trong mạng thì pooling layer sẽ được dùng để lược bỏ các thông tinkhông hữu ích Từ đó cho ra kết quả theo kỳ vọng người dùng
Trang 9Mạng CNN được sử dụng phổ biến
4 Cách lựa chọn tham số cho mạng CNN
Để chọn tham số phù hợp nhất cho mạng CNN thì bạn cần chú ý đến nhữngyếu tố như: filter size, số convolution, pooling size và việc train – test
• Lớp Convolution: Số lượng lớp này càng nhiều thì sẽ giúp cải thiện đượchoạt động của chương trình Sử dụng những lớp với số lượng lớn thì khảnăng hạn chế các tác động các tốt Thông thường, chỉ sau khoảng 3 đến 4lớp bạn sẽ đạt được kết quả như kỳ vọng
• Filter size: Kích thước thường chọn là ma trận 3×3 hoặc ma trận 5×5
• Pooling size: Với những hình ảnh thông thường, bạn nên chọn ma trậnpooling kích thước 2×2 Với những ảnh kích thước lớn thì nên chọn matrận kích thước 3×3
• Train – test: Cần thực hiện train – test nhiều lần để có thể cho ra nhữngparameter tốt nhất
Trang 10Hy vọng rằng những chia sẻ trên, bạn sẽ hiểu được CNN là gì và cấu trúc củamạng này ra sao Để từ đó có thể áp dụng trong quá trình học và làm việc vớiMachine Learning, Deep Learning nói riêng và Trí tuệ nhân tạo nói chung.
CHƯƠNG 2: Tìm hiểu về thư viện lớn TensorFlow
Tensorflow là gì – Với sự bùng nổ của lĩnh vực Trí Tuệ Nhân Tạo – A.I trong thập kỷ vừa qua, machine learning và deep learning rõ ràng cũng phát triển theo cùng Và ở thời điểm hiện tại, TensorFlow chính là thư viện mã nguồn mở cho machine learning nổi tiếng nhất thế giới, được phát triển bởi các nhà nghiên cứu từ Google Việc hỗ trợ mạnh mẽ các phép toán học để tính toán trong machine
learning và deep learning đã giúp việc tiếp cận các bài toán trở nên đơn giản,
nhanh chóng và tiện lợi hơn nhiều
Các hàm được dựng sẵn trong thư viện cho từng bài toán cho phép TensorFlowxây dựng được nhiều neural network Nó còn cho phép bạn tính toán song song trên nhiều máy tính khác nhau, thậm chí trên nhiều CPU, GPU trong cùng 1 máy hay tạo ra các dataflow graph – đồ thị luồng dữ liệu để dựng nên các model Nếu bạn muốn chọn con đường sự nghiệp trong lĩnh vực A.I này, nắm rõ những điều cơbản của TensorFlow thực sự rất quan trọng
Được viết bằng C++ và thao tác interface bằng Python nên phần performance của TensorFlow cực kỳ tốt Đối tượng sử dụng nó cũng đa dạng không kém: từ các nhà nghiên cứu, nhà khoa học dữ liệu và dĩ nhiên không thể thiếu các lập trình viên
1. Lịch sử ra đời TensorFlow
Vài năm trước, khi phải xử lý lượng dữ liệu khổng lồ, deep learning bắt đầu cho thấy hiệu năng vượt trội so với tất cả các thuật toán machine learning khác Google sớm nhận ra tiềm năng này và nghĩ rằng họ nên sử dụng deep neural network để cải thiện các dịch vụ của mình, trong đó có:
– Gmail
– Hình ảnh
– Google search engine
Trang 11Thế là họ dựng 1 framework có tên là TensorFlow để các nhà nghiên cứu cũngnhư lập trình viên có thể làm việc cùng nhau trên model A.I 1 khi đã được phát triển và scale hoàn chỉnh, rất nhiều người đã có thể sử dụng được nó
Ra mắt lần đầu vào cuối năm 2015, phiên bản TensorFlow ổn định cuối cùng cũng xuất hiện vào năm 2017 Là mã nguồn mở dưới sự cho phép của Apache Open Source, giờ đây bạn có thể sử dụng, điều chỉnh và tái đóng góp phiên bản được điều chỉnh đó, đổi lại không cần phải trả bất cứ đồng nào cho Google
Trang 13* Kiến trúc của TensorFlow
Kiến trúc TensorFlow hoạt động được chia thành 3 phần:
và các ứng dụng TensorFlow bản thân chúng cũng là các ứng dụng Python
Các operation toán học thực sự thì không được thi hành bằng Python Các thư viện biến đổi có sẵn thông qua TensorFlow được viết bằng các binary C++ hiệu suất cao Python chỉ điều hướng lưu lượng giữa các phần và cung cấp các high-level abstraction lập trình để nối chúng lại với nhau
TensorFlow 2.0, được ra mắt vào tháng 10 năm 2019, cải tiến framework theonhiều cách dựa trên phản hồi của người dùng, để dễ dàng và hiệu quả hơn khi làm việc cùng nó (ví dụ: bằng cách sử dụng các Keras API liên quan đơn giản cho việc train model) Train phân tán dễ chạy hơn nhờ vào API mới và sự hỗ trợ cho
TensorFlow Lite cho phép triển khai các mô hình trên khá nhiều nền tảng khác nhau Tuy nhiên, nếu đã viết code trên các phiên bản trước đó của TensorFlow thì bạn phải viết lại, đôi lúc 1 ít, đôi lúc cũng khá đáng kể, để tận dụng tối đa các tính năng mới của TensorFlow 2.0
Trang 14* Lợi ích từ TensorFlow
Lợi ích dễ thấy nhưng quan trọng nhất mà TensorFlow cung cấp cho việc lập trình machine learning chính là abstraction Thay vì phải đối phó với những tình huống rườm rà từ việc thực hiện triển khai các thuật toán, hay tìm ra cách hợp lý đểchuyển output của 1 chức năng sang input của 1 chức năng khác, giờ đây bạn có thể tập trung vào phần logic tổng thể của 1 ứng dụng hơn TensorFlow sẽ chăm sócphần còn lại thay cho bạn
Ngoài ra TensorFlow còn ung cấp các tiện ích bổ sung cho các lập trình viên cần debug cũng như giúp bạn tự suy xét các ứng dụng TensorFlow Chế độ eager execution cho phép bạn đánh giá và sửa đổi từng operation của biểu đồ 1 cách riêng biệt và minh bạch, thay vì phải dựng toàn bộ biểu đồ dưới dạng 1 đối tượng độc lập vốn khá mơ hồ hay phải đánh giá chung tổng thể Cuối cùng, 1 tính năng khá độc đáo của TensorFlow là TensorBoard TensorBoard cho phép bạn quan sát 1cách trực quan những gì TensorFlow đang làm
TensorFlow còn có nhiều cải tiến từ sự hậu thuẫn từ các ekíp thương mại hạng
A tại Google Google không những tiếp lửa cho tiến độ nhanh chóng cho sự phát triển đằng sau dự án, mà còn tạo ra nhiều phục vụ độc đáo xung quanh TensorFlow
để nó dễ dàng deploy và sử dụng: như silicon TPU mình đã nói ở trên để tăng tốc hiệu suất đám mây Google, 1 online hub cho việc chia sẻ các model được tạo với framework, sự hiện diện của in-browser và gần gũi với mobile của framework, và nhiều hơn thế nữa…
Lưu ý: Trong 1 số công việc training, vài chi tiết về việc triển khai của
TensorFlow làm cho nó khó có thể quyết định được hoàn toàn kết quả training model Đôi khi 1 model được train trên 1 hệ thống này sẽ có thay đổi 1 chút so với
1 model được train trên hệ thống khác, ngay cả khi chúng được cung cấp dữ liệu như nhau Các nguyên nhân cho điều này cũng xê xích hay 1 số hành vi khi không được xác định khi sử dụng GPU Điều này nói rằng, các vấn đề đó có thể giải quyết được, và đôi ngũ của TensorFlow cũng đang xem xét việc kiểm soát nhiều hơn để ảnh hưởng đến tính quyết định trong quy trình làm việc
* Giới thiệu các Component của TensorFlow
Tensor
Trang 15Tên của TensorFlow được đưa ra trực tiếp là nhờ vào framework cốt lõi của nó: Tensor Trong TensorFlow, tất cả các tính toán đều liên quan tới các tensor 1 tensor
là 1 vector hay ma trận của n-chiều không gian đại diện cho tất cả loại dữ liệu Tất
cả giá trị trong 1 tensor chứa đựng loại dữ liệu giống hệt nhau với 1 shape đã biết (hoặc đã biết 1 phần) Shape của dữ liệu chính là chiều của ma trận hay mảng
1 tensor có thể được bắt nguồn từ dữ liệu input hay kết quả của 1 tính toán Trong TensorFlow, tất cả các hoạt động được tiến hành bên trong 1 graph – biểu
đồ Biểu đồ là 1 tập hợp tính toán được diễn ra liên tiếp Mỗi operation được gọi là
1 op node (operation node) và được kết nối với nhau
Biểu đồ phát thảo các op và kết nối giữa các node Tuy nhiên, nó không hiển thịcác giá trị Phần edge của các node chính là tensor, 1 cách để nhập operation với
dữ liệu
Graph
TensorFlow sử dụng framework dạng biểu đồ Biểu đồ tập hợp và mô tả tất cả các chuỗi tính toán được thực hiện trong quá trình training Biểu đồ cũng mang rất nhiều lợi thế:
– Nó được làm ra để chạy trên nhiều CPU hay GPU, ngay cả các hệ điều hành trên thiết bị điện thoại
– Tính di động của biểu đồ cho phép bảo toàn các tính toán để bạn sử dụng ngay hay sau đó Biểu đồ
có thể được lưu lại để thực thi trong tương lai.
– Tất cả tính toán trong biểu đồ được thực hiện bằng cách kết nối các tensor lại với nhau 1 tensor có
1 node và 1 edge Node mang operation toán học và sản xuất các output ở đầu cuối Các edge giải thích mối quan hệ input/output giữa các node.
* Danh sách các thuật toán nổi bật được hỗ trợ bởi
Trang 16– Deep learning classification: tf.estimator.DNNClassifier
– Deep learning wipe and deep: tf.estimator.DNNLinearCombinedClassifier
– Booster tree regression: tf.estimator.BoostedTreesRegressor
– Boosted tree classification: tf.estimator.BoostedTreesClassifier
2.Ví dụ đơn giản về TensurFlow
Trong 2 line code đầu, ta đã import tensorflow là tf Với Python, nó chỉ là 1 bài tập thông dụng khi dùng tên viết tắt cho 1 thư viện Lợi thế là để tránh gõ đầy đủ tên của thư viện khi ta cần sử dụng nó
Ví dụ: chúng ta có thể import tensorflow là tf, và gọi tf khi chúng ta muốn dùng
Trang 17
Cuối cùng, chúng ta chạy 1 session TensorFlow mà sẽ chạy đồ thị tính toán với giátrị của X_1 và X_2 và print phần kết quả của phép nhân
Hãy xác định các input node của X_1 và X_2 Khi ta tạo 1 node trong
TensorFlow, chúng ta phải chọn nó là loại node gì Các node X1 và X2 sẽ là node placeholder – node giữ chỗ Placeholder chỉ định 1 giá trị mới mỗi khi ta làm 1 phép tính Ta sẽ tạo chúng như là 1 node TF chấm placeholder
Bước 1: Xác định giá trị
Trang 18Bước 2: Xác định phần tính toán
Giờ ta có thể xác định node sẽ thực hiện operation phép nhân Trong
TensorFlow, chúng ta có thể làm điều đó bằng cách tạo 1 node tf.multiply
Ta sẽ nhập node X_1 và X_2 tới node nhân Nó sẽ nói với TensorFlow để liên kết những node đó trong đồ thị tính toán, nên ta đang yêu cầu nó để pull các giá trị từ x và y và nhân phần kết quả Hãy cho node nhân cái tên multiply Nó là toàn bộ định nghĩa cho đồ thị tính toán đơn giản này
Bước 3: Thực thi operation
Để thực thi các operation trong đồ thị, ta phải tạo 1 session Trong TensorFlow,
nó được thực hiện bằng tf.Session() Giờ ta có 1 session ta có thể hỏi session để chạy operation trên đồ thị tính toán của ta bằng cách gọi session Để chạy phần tínhtoán, chúng ta sẽ dùng run
Khi operation bổ sung chạy, nó sẽ thấy rằng nó cần để lấy các giá trị của node X_1 và X_2, nên chúng ta cũng cần cung cấp các trị cho X_1 và X_2 Ta có thể dùng điều đó bằng cách cung cấp 1 tham số được gọi là feed_dict Chúng ta
chuyển giá trị 1,2,3 cho X_1 và 4,5,6 cho X_2
Chúng ta print phần kết quả với print(result) Chúng ta sẽ thấy 4,10 và 18 cho 1×4, 2×5 và 3,6
3.Các option tải dữ liệu vào TensorFlow
Bước đầu tiên trước khi train 1 thuật toán machine learning là load dữ liệu Có
2 cách thông dụng để load dữ liệu:
1 Load dữ liệu vào bộ nhớ: đây là phương pháp đơn giản nhất Bạn load tất cả
Trang 19Load dữ liệu vào bộ nhớ
Nếu dataset của bạn không quá lớn, chẳng hạn như dưới 10 GB, bạn có thể dùng phương pháp đầu tiên Dữ liệu có thể dễ dàng fit vào bộ nhớ Bạn cũng có thểdùng 1 thư viện nổi tiếng có tên là Pandas để import các tệp CSV 1
Load dữ liệu với TensorFlow pipeline
Phương pháp thứ 2 sẽ hoạt động tốt nhất nếu bạn có 1 dataset lớn Ví dụ: nếu bạn có 1 dataset nặng 50 GB và máy tính của bạn chỉ có 16GB dung lượng thì rõ ràng là máy sẽ crash thôi
Trong tình huống này, bạn cần dựng 1 TensorFlow pipeline Đường ống sẽ load
dữ liệu trong batch, hay chunk nhỏ Mỗi batch sẽ được push tới pipeline và sẵn sàng cho việc training Dựng 1 pipeline là 1 giải pháp tuyệt vời vì nó còn cho bạn
sử dụng phép tính toán song song Nghĩa là TensorFlow sẽ train model qua nhiều CPU Thúc đẩy sự tính toán và cho phép training mạng lưới thần kinh mạnh mẽ hơn
Trang 20Bước 2: Tạo placeholder
Giống như ví dụ trước, ta tạo 1 placeholder với tên là X Ta cần phải chỉ định shapecủa TensorFlow 1 cách rõ ràng Trong vài trường hợp, ta sẽ tải 1 mảng với chỉ 2 giátrị Ta có thể viết shape như là shape=[1,2]
Bước 3: Xác định phương pháp cho set dữ liệu
Tiếp theo, chúng ta cần phải xác định set dữ liệu nơi ta có thể nhập giá trị của placeholder x Chúng ta cần dùng phương pháp tf.data.Dataset.from_tensor_slices
Bước 4: Tạo đường ống
Trong bước này, ta cần phải khởi tạo pipeline nơi dữ liệu chạy qua Ta cần tạo 1 iterator với make_initializable_iterator Đặt tên cho nó là iterator Rồi ta cần gọi iterator này để feed cho batch dữ liệu tiếp theo, get_next Ta đặt tên bước này là get_next Hãy lưu ý điều này trong ví dụ của mình, vì chỉ có duy nhất 1 batch dữ liệu với 2 giá trị
Trang 21Bước 5: Thực thi operation
Bước cuối cũng tương tự như ví dụ trước Ta khởi tạo 1 session và chạy operation iterator Ta feed cái feed_dict với giá trị được tạo ra bởi numpy 2 giá trị này sẽ nhập vào placeholder x Rồi chúng ta chạy get_next để print kết quả
III Tìm hiểu về thư viện Keras.
1. Giới thiệu về Keras.
Trang 22Các thư viện deep learning thường được ‘chống lưng’ bởi những hãng công nghệ lớn: Google (Keras, TensorFlow), Facebook (Caffe2, Pytorch), Microsoft (CNTK), Amazon (Mxnet), Microsoft và Amazon cũng đang bắt tay xây dựng Gluon (phiên bản tương tự như Keras) (Các hãng này đều có các dịch vụ cloud computing và muốn thu hút người dùng).
Sau đây là một vài thống kê để mọi người có cái nhìn tổng quan về các thư viện được sử dụng nhiều nhât
Số lượng "star" trên Github Repo, số lượng "Contributors" của các thư viện