- VisualStudio2022
- pprof-Hướng dẫn sử dụng nó trong bản mạng trực tiếp
- Triển khai C# các loại hộp chọn nhiều màu lựa chọn thả xuống, cây lựa chọn nhiều màu lựa chọn thả xuống và các nút tối đa
- [Ghi chú học tập] Cơ sở dữ liệu cấu trúc: cat tree
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.
request về môi trường.
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
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.
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).
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);
MnistDataSetIterator
Load MNIST data file.NeuralNetConfiguration.Builder
Xây dựng cấu hình mạng lưới.Mạng nhiều lớp
Tạo mô hình và khởi động nó.phù hợp()
Phương pháp huấn luyện mô hình.Đả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!"
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.
DL4J cung cấp các phương pháp dễ dàng để lưu và tải model.
You can can thử các phương pháp sau:
ReLU bị rò rỉ
hoặc ELU
.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ụ.
Đó 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.
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ộ.
MnistDataSetIterator
Load MNIST data file..zip
tài liệ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!
Thông tin cơ bản: Gần đây tôi đã làm việc với JPA và rất ấn tượng với sự dễ dàng mà tôi có thể tạo lớp lưu giữ long long for a other base base project. đặc biệt là cột hướng cơ sở dữ liệu. này
If not Apache Solr with Jar. tôi đã nhận được SolarServerException: ClassNotF
giao diện ITurtle { void Fight(); void EatPizza() } giao diện ILeonardo : ITurtle {
Tôi hy vọng rằng một trong các công cụ đối tượng/quan hệ (ORM) công cụ đã có sẵn cho Java sẽ đáp ứng các yêu cầu sau: use JPA hoặc truy vấn SQL gốc để lấy số lượng hàng lớn và trả lời chúng dưới dạng đối tượng được phép thực hiện. các hàng (thực thể) và thực hiện thao tác tại
Có vẻ như không, vì tôi có mã phát triển From for, tôi có thể chuyển đổi A thành B bằng .into(), nhưng điều tương tự không hoạt động động với Vec .into() a Vec. Hoặc là tôi đã làm hỏng điều đó. nên được đăng
Trong C#, nếu A phát triển khai IX và B kế thừa từ A, thì có nhất thiết phải góp theo B phát triển khai IX không? Nếu vậy thì có phải làm LSP không? các sự khác biệt giữa: 1. Giao diện IX Loại A : IX;
Như hiện tại, câu hỏi này không phù hợp với dạng Hỏi & Đáp của chúng tôi. được hỗ trợ bởi các sự kiện, trích dẫn hoặc chuyên môn, nhưng câu hỏi có thể gây ra tranh luận, tranh luận, bỏ phiếu hoặc thảo luận mở rộng.
Triển lãm x0 | Triển lãm x0
Tôi sẽ biểu diễn trò chơi cờ vua dưới dạng cấu trúc C++. độ sâu, chúng tôi có thể thực hiện một số bước chuyển đổi).
Tôi đang phát triển chuỗi thuật toán phù hợp cho người dùng cơ sở dữ liệu. dữ liệu tên người dùng hiện có và tên người dùng mới mà người dùng muốn, sau đó kiểm tra xem tên người dùng đã có not used. lấy từ cơ sở dữ liệu Ví dụ: “Gia
Tôi đang cố gắng phát triển các thuật toán tìm kiếm chiều rộng để tìm khoảng cách ngắn nhất giữa hai đỉnh cao. một đối tượng được chờ đợi để lưu trữ và truy xuất các đối tượng và tôi có một mảng 2D để lưu hai giá trị đã được chọn
Tôi hiện đang phát triển trò chơi Python của mình bằng ika, sử dụng python 2.5 và tôi quyết định sử dụng tính năng tìm kiếm đường A* cho AI. tôi muốn cung cấp 4-
Tôi đang tìm cách triển khai mã nguồn mở của Kademlia cho bảng băm phân tán trong C/C++. Nó phải nhẹ và đa nền tảng (win/linux/mac). Nó phải có khả năng xuất bản thông tin lên DHT và truy xuất nó. Câu trả lời hay nhất OpenDHT là
Tôi đọc được dòng này trong một cuốn sách: - "Khi chúng tôi yêu cầu triển khai C++ chạy một chương trình, nó sẽ thực hiện bằng cách gọi hàm này." Và tôi muốn biết "triển khai C++" nghĩa là gì hoặc cụ thể là gì. giúp đỡ!? Câu trả lời hay nhất "triển khai C++" đề cập đến trình biên dịch cộng với liên kết
Tôi đang cố gắng triển khai vấn đề về chiếc ba lô này bằng cách sử dụng C++ phân nhánh và ràng buộc. Có một phiên bản Java trên trang này: Triển khai nhánh và ràng buộc cho ba lô Tôi đang cố gắng in phiên bản C++ của mình
Có nhiều tình huống mà tôi cần quyền truy cập vào thuật toán băm phù hợp trong C#, từ ghi đè GetHashCode đến thực hiện so sánh/tra cứu nhanh trên dữ liệu. Tôi thấy băm FNV là một thuật toán băm rất đơn giản/tốt/nhanh. Tuy nhiên, tôi chưa bao giờ thấy triển khai C#
Ý tưởng cốt lõi của chiến lược thay thế bộ đệm LRU thư mục không thể áp dụng thuật toán kịch bản triển khai cơ bản tối ưu hóa thuật toán
1. Giới thiệu Trong bài trước chúng tôi đã đề cập đến sự chuyển đổi lẫn nhau của các hệ tọa độ hình chữ nhật trong không gian Khi chuyển đổi tọa độ đo đạc và lập bản đồ, tình huống thường gặp là: chuyển đổi góc nhỏ của hai hệ tọa độ hình chữ nhật. Đây là những gì chúng ta thường sử dụng trong xử lý dữ liệu khảo sát và bản đồ, hệ tọa độ WGS-84, hệ tọa độ 54 Bắc Kinh
Trong quá trình phát triển phần mềm, đôi khi chúng ta cần thường xuyên kiểm tra dữ liệu trong cơ sở dữ liệu và kích hoạt hành động khi tìm thấy dữ liệu mới. Để hiện thực hóa yêu cầu này, chúng tôi tiến hành trình diễn đơn giản trong .Net 7. PeriodicTimer.
Tìm kiếm nhị phân Thuật toán tìm kiếm nhị phân, nói một cách thẳng thắn, là đưa ra một khóa giá trị tồn tại trong mảng theo một mảng có thứ tự, sau đó so sánh nó với giá trị giữa của mảng trước. thực hiện phép so sánh tiếp theo sau đường giữa cho đến khi tìm được. Nếu bằng nhau thì có thể đạt được vị trí của nó.
Tôi là một lập trình viên xuất sắc, rất xuất sắc!