cuốn sách gpt4 ai đã làm

deeplearning4j~triển khai đào tạo và thử nghiệm hình đơn giản

In lại Tác giả: Sahara Thời gian cập nhật: 2025-01-07 16:42:47 55 4
mua khóa gpt4 Nike

DeepLearning4j (DL4J) là một mã nguồn deep learning thư viện được thiết kế cho Java và Scala. tạo và phát triển các mô hình deep learning. đơn giản.

MNIST data (chuẩn hóa video và công nghệ quốc gia đã được sửa đổi) là một cơ sở dữ liệu chữ số write hand lớn (chứa mười số từ 0 đến 9) do Yann LeCun và các đồng nghiệp tạo ra vào năm 1994. Bản gốc dữ liệu của MNIST dữ liệu được lấy từ hai bộ dữ liệu của Tiêu Tiêu và Công nghệ Quốc gia: cơ sở dữ liệu đặc biệt 1 và cơ sở dữ liệu đặc biệt 3. Chúng tôi bao gồm các chữ số từ 0-9 được viết bằng tay bởi nhân viên NIST và học sinh trung học Mỹ. thay đổi kích thước, LeCun et al. thu được hình ảnh thang độ xám 28 × 28.

Hướng dẫn sử dụng DeepLearning4j

Install and config

  1. request về môi trường.

    • Bộ công cụ phát triển Java (JDK) 8 trở lên
    • Maven (được khuyến nghị) hoặc Gradle để quản lý dự án
  2. Tạo dự án Maven Tạo dự án Maven mới trong IDE của bạn và bổ sung các phần phụ thuộc sau vào tệp pom.xml:

       org.deeplearning4j deeplearning4j-core 1.0.0-M1.1    org.nd4j nd4j-nền tảng gốc 1.0.0-M1.1    org.datavec  datavec-api 1.0.0-M1.1  
    
  3. Cập nhật các phần phụ thuộc của Maven Bảo đảm IDE của bạn đã cập nhật và tải xuống các phần phụ thuộc của Maven down các thư viện cần thiết.

Đào tạo mô hình đơn giản

Dưới đây là ví dụ sử dụng DL4J để huấn luyện mạng nơ-ron đơn giản với mục tiêu phân loại các chữ số tay (MNIST data).

ví dụ về mã hóa
nhập org.deeplearning4j.datasets.iterator.impl.MnistDataSetIterator; nhập org.deeplearning4j.nn.conf.MultiLayerConfiguration; nhập org.deeplearning4j.nn.conf.NeuralNetConfiguration; .optimize.listeners.ScoreIterationListener; nhập org.nd4j.linalg.activations.Activation; nhập org.nd4j.linalg.dataset.api.iterator.DataSetIterator; nhập org.nd4j.linalg.learning.config.Adam; public static void main(String[] args) Ngoại lệ ném { // Tải bộ dữ liệu MNIST DataSetIterator mnistTrain = new MnistDataSetIterator(128, true, 12345); // Định cấu hình mạng nơ-ron MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder() .seed(123) .updater(new Adam(0.001)) .list( ) .lớp (0, mới DenseLayer.Builder().nIn(784).nOut(256) .activation(Activation.RELU ) .build()) .layer(1, mới OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD) .activation(Activation.SOFTMAX) .nIn(256).nOut(10).build()) .build(); // Mô hình MultiLayerNetwork = new MultiLayerNetwork( conf); model.setListeners(new ScoreIterationListener(100)); // Xuất điểm sau mỗi 100 lần lặp model for (int i = 0; i < 10; i++) { // Huấn luyện trong 10 kỷ nguyên model.fit(mnistTrain) ; System.out.println("Đào tạo đã hoàn tất!"); //Đánh giá chính xác kép của mô hình = model.evaluate(mnistTest).accuracy(); System.out.println(" Tỷ lệ mô hình chính xác: " + độ chính xác); // Lưu mô hình vào tệp modelFile = new); File("mnist_model.zip"); ModelSerializer.writeModel(model, modelFile, true);
Code Description
  1. Load data:sử dụng MnistDataSetIterator Load MNIST data file.
  2. Cấu hình mạng lưới thần kinh:
    • sử dụng NeuralNetConfiguration.Builder Xây dựng cấu hình mạng lưới.
    • Thêm lớp đầu vào (DenseLayer) và lớp đầu ra (OutputLayer).
  3. Tạo và khởi tạo mô hình:sử dụng Mạng nhiều lớp Tạo mô hình và khởi động nó.
  4. Mô hình đào tạo: Được gọi thông qua một vòng lặp phù hợp() Phương pháp huấn luyện mô hình.

Chạy ví dụ

Đảm bảo môi trường của bạn được thiết lập chính xác trước khi chạy mã hóa. trên tập dữ liệu MNIST và sau khi quá trình đào tạo hoàn tất, thông báo "Hoàn tất đào tạo!"

Đánh giá mô hình

Sau khi đào tạo một mô hình, bạn thường phải mô tả giá của nó để hiểu hoạt động như thế nào trên dữ liệu chưa đã nhìn thấy.

Lưu và tải mô hình

DL4J cung cấp các phương pháp dễ dàng để lưu và tải model.

Điều chỉnh và mô hình hóa tối ưu

You can can thử các phương pháp sau:

  • Tăng số lượng lớp hoặc nút: Tăng cường độ phức tạp của mô hình.
  • thay đổi tốc độ học tập: Thử nghiệm với các tốc độ học khác nhau để tìm ra giá trị tốt nhất.
  • Sử dụng các chức năng kích hoạt khác nhau: Ví dụ, hãy thử ReLU bị rò rỉ hoặc ELU.
  • chính quy hóa: Thêm lớp Dropout hoặc chính hóa L2 để tránh trang bị quá mạnh.

Khai báo mô hình phát triển

Nếu bạn dự định sử dụng mô hình của mình trong môi trường sản xuất, hãy cân nhắc việc phát triển mô hình đó dưới dạng dịch vụ.

  • API còn lại: Đưa mô hình vào một dịch vụ RESTful để tạo điều kiện thuận lợi cho cuộc gọi của khách hàng.
  • Ứng dụng nhúng: Nhúng mô hình vào ứng dụng Java và đưa ra dự đoán trực tiếp.

Model Test

Đó là một dự án tuyệt vời khi sử dụng Java và DeepLearning4j để rèn luyện bản thân về hình ảnh các chữ số viết tay (ví dụ Ví dụ: hình ảnh tiêu chuẩn từ 0 đến 9). được mục tiêu này.

Tổng quan các bước

  1. Chuẩn bị dữ liệu: Chuẩn bị các hình ảnh kỹ thuật số của bạn sang định dạng phù hợp.
  2. Tạo và cấu hình mô hình: Sử dụng DeepLearning4j để tạo mô hình mạng thần kinh.
  3. Mô hình đào tạo: Huấn luyện mô hình bằng hình ảnh dữ liệu của bạn.
  4. Đánh giá và thử nghiệm mô hình: Kiểm tra hiệu suất của mô hình.

1. Chuẩn bị dữ liệu

Trước tiên, bạn cần chuẩn bị sẵn hình ảnh số 0-9. ảnh thang độ xám 28x28 pixel và chúng được lưu trữ trong bộ hệ thống tệp cục bộ.

Mô hình thử nghiệm các bước

Bước 1: Huấn luyện mô hình bằng bộ dữ liệu MNIST

  1. Load data:sử dụng MnistDataSetIterator Load MNIST data file.
  2. Xây dựng mô hình:
  3. Mô hình đào tạo: Sử dụng MNIST data file để huấn luyện mô hình.
  4. Lưu mô hình: lưu mô hình đã đào tạo vào một tệp (ví dụ: lưu dưới dạng .zip tài liệu).

Bước 2: Chuẩn bị hình ảnh chữ số viết tay

  1. tay viết số: Viết tay số 1 rồi chụp ảnh hoặc quét thành ảnh.
  2. Xử lý hình ảnh trước:
    • Chuyển đổi hình ảnh sang hình ảnh thang độ xám.
    • Thay đổi hình ảnh kích thước thành 28x28 pixel (chuẩn kích thước tiêu chuẩn trong MNIST dữ liệu).
    • Chuẩn hóa hình ảnh (thường chia tỷ lệ giá trị pixel thành phạm vi [0, 1]).

Bước 3: So sánh các chữ số với MNIST data

  1. Tải mô hình đã lưu: Tải mô hình đã được đào tạo trước đó từ tệp zip.
  2. Dự kiến ​​viết số tay: Nhập các hình ảnh chữ số đã được xử lý trước đó vào mô hình để mong đợi.
  3. Kết quả đầu raBạn có thể so sánh kết quả này với các nhãn tương ứng trong tập tin MNIST data.

Những điều cần lưu ý

  • Xử lý dữ liệu tiền tệ: Đảm bảo rằng các chữ số được xử lý trước đó giống như trong quá trình đào tạo, bao gồm kích thước hình ảnh, kênh màu và chuẩn hóa.
  • Đánh giá mô hình: Trước khi so sánh, hiệu suất của mô hình có thể được đánh giá dựa trên thử nghiệm để đảm bảo độ chính xác của không.
  • Kết quả định lượng trực tiếp: Các số viết tay và dự đoán của chúng có thể được hiển thị thông qua các công cụ trực quan như matplotlib để hiểu rõ hơn về hiệu suất của mô hình.

Mã mẫu

Dưới đây là khung mã mẫu đơn giản cho biết cách phát triển các bước này [MnistUtils.java].

/** * @author lind * @date 2025/1/7 14:27 * @since 1.0.0 */ public class MnistUtils { /** * Chuyển đổi hình ảnh sang hình ảnh thang độ xám * * @param original * @return * / riêng tư tĩnh BufferedImage ConvertToGrayscale(BufferedImage gốc) { BufferedImage greyImage = new BufferedImage(origin.getWidth(), original.getHeight(), BufferedImage.TYPE_BYTE_GRAY); Đồ họa g = greyImage.getGraphics(); g.drawImage(bản gốc, 0, 0, null); } /** * Điều chỉnh kích thước hình ảnh * * @param original * @param width * @param Height * @return */ riêng tư BufferedImage thay đổi kích thước thướcImage(BufferedImage gốc, int width, int Height) { Hình ảnh được chia tỷ lệ = original.getScaledInstance(chiều rộng, chiều cao, Image.SCALE_SMOOTH); thay đổi kích thướcImage = new BufferedImage(chiều rộng, chiều cao, BufferedImage.TYPE_BYTE_GRAY); Đồ họa2D g2d = thay đổi kích thướcImage.createGraphics(); g2d.drawImage(scaledImage, 0, 0, null); g2d.dispose(); LoadGrayImg(String fileName) { try { // 1. Tải hình ảnh BufferedImage originalImage = ImageIO.read(new File(fileName)); // 2. Chuyển đổi sang hình ảnh thang độ xám BufferedImage greyImage = ConvertToGrayscale(originImage); // 3. Thay đổi kích thước BufferedImage thành 28x28 pixel đã thay đổi kích thướcImage = sizeImage(grayImage, 28, 28); trả về quá trình chuẩn hóa normalizeImage(resizedImage); } Catch (IOException e) { e.printStackTrace(); } return null; } /** * Chuẩn hóa hình ảnh và tạo INDArray * * @param image * @return */ tĩnh riêng INDArray normalizeImage(BufferedImage image) { int width = image.getWidth(); int Height = image.getHeight(); = new double[width * Height]; // Tạo mảng một chiều cho (int y = 0; y < Height ; y++) { for (int x = 0; x < width; x++) { // Lấy giá trị thang độ xám ( 0-255) int greyValue = image.getRGB(x, y) & 0xFF; // Chỉ lấy phần thang độ xám // Chuẩn hóa thành phạm vi [0, 1] normalizedData[y * width + x] = Giá trị xám / 255.0; // Chuyển sang mảng một chiều } } // Chuyển đổi mảng một chiều thành INDArray và thêm lô kích thước INDArray indArray = Nd4j.create(normalizedData).reshape(1, 784); [1, 784] trả về indArray;

[MnistTest.java].

public static void main(String[] args) Ném IOException { // Tải mô hình được đào tạo MultiLayerNetwork model = MultiLayerNetwork.load(new File("E:\\github\\lind-deeplearning4j\\mnist_model.zip"), đúng ) ; // Đường kiểm tra ảnh dẫn chuỗi testImagePath = "d:\\dlj4\\img\\"; từ 0.png đến 9.png. nhận ra (int i = 0; i <= 3; i++) { String. fileName = testImagePath + i + ".png"; System.out.println("fileName=" + fileName); ; INDArray đầu ra = model.output(testImage); // Đưa ra dự đoán // Nhận kết quả dự đoán int dự đoánClass = Nd4j.argMax(output, 1).getInt(0); System.out.println("Test Image" + i + " dự đoán); } }

Kết quả kiểm tra mô hình, nó sẽ phân tích các số trên hình ảnh dựa trên hình ảnh 0-3 Đây là kết quả thực sự. dựa trên bộ dữ liệu của MINIST mà chúng tôi đã đào tạo.

Cuối cùng, bài viết này về deeplearning4j~triển khai đào tạo và thử nghiệm mô hình đơn giản kết thúc ở đây Nếu bạn muốn. biết thêm về deeplearning4j~triển khai đào tạo và thử nghiệm hình đơn giản, vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt các bài viết trong tương lai!

55 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress