Lỗi bộ nhớ khi sử dụng nhiều lớp hơn trong mô hình CNN


7

Trên dell core i7 - RAM 16GB - máy tính xách tay GPU 4gb 960m, tôi đang thực hiện một dự án để phân loại hình ảnh CT phổi bằng 3d CNN. Tôi đang sử dụng phiên bản CPU của tenorflow. Các hình ảnh được chuẩn bị là kích thước mảng numpy (25,50,50).

Mô hình CNN của tôi có 2 lớp đối lưu, hai lớp maxpool, một lớp FC và lớp đầu ra. Với kiến ​​trúc này, tôi có thể huấn luyện mô hình với khoảng (5000 đến 6000) mẫu. Sau khi thêm nhiều lớp, mô hình của tôi bây giờ có 6 lớp đối lưu, 3 lớp nhóm tối đa, FC và lớp đầu ra. Vấn đề của tôi là sau khi thay đổi kiến ​​trúc chỉ với hơn 1000 mẫu, bộ nhớ của tôi bị đầy và tôi bị lỗi bộ nhớ. Tôi đã cố gắng thực hiện các lô nhỏ hơn, nhưng mỗi lần nhận được cùng một lỗi. Tôi có hai câu hỏi:

  1. Tại sao bằng cách thêm nhiều lớp, mô hình cần nhiều bộ nhớ hơn?

  2. Có cách nào để đối phó với loại vấn đề này?


Có thể là do bạn đang có nhiều Thông số và theo mặc định, GPU của bạn đang được sử dụng để tính toán và 4gb có thể không phù hợp ..
Aditya

Tôi sử dụng phiên bản CPU của dòng chảy căng không phải GPU
Hunar A.AHmed

Câu trả lời:


4
  1. Nhiều lớp hơn có nghĩa là nhiều tham số hơn cho mạng của bạn, điều này có nghĩa là có nhiều không gian cần thiết hơn trong bộ nhớ để lưu trữ các tham số đó.

  2. Giải pháp duy nhất (ngoài việc tăng bộ nhớ cho máy tính của bạn) là giảm kích thước mạng của bạn. Một vài gợi ý về điều này: Thứ nhất, CNN 3-D đòi hỏi nhiều không gian hơn so với 2-D. Một ý tưởng có thể là chuyển sang loại 2 chiều. Ngoài ra, các lớp có nhiều tham số nhất là các lớp FC. Những điều này đôi khi dư thừa. Tôi muốn đề nghị giảm kích thước của những người đầu tiên.


Tôi nghĩ rằng 3d CNN đang cho độ chính xác cao hơn 2d, vì tôi đã sử dụng 3d CNN. số lượng nút trong lớp FC của tôi là 1024, bạn có nghĩa là giảm số đó? điều này không ảnh hưởng đến độ chính xác?
Hunar A.AHmed

1
1024204820481024+10242.1140m100m

4

Thêm vào điểm được tạo bởi MzdR, bạn cũng có thể thử sử dụng máy phát điện thay thế. Vì mô hình của bạn sẽ không thực sự cần phải có tất cả hình ảnh của bạn trong bộ nhớ trong khi đào tạo, tôi nghĩ rằng một trình tạo sẽ phục vụ tốt.

Kiểm tra câu hỏi này từ stackoverflow. Máy phát điện khá tuyệt vời khi bạn mặc cả bộ nhớ. Nhưng nếu điều này cũng thất bại, hãy thử giảm kích thước của các lớp FC của bạn.


Tôi nghĩ rằng máy phát điện là một ý tưởng thú vị cho trường hợp của tôi và tôi sẽ thử nó, nhưng vấn đề của tôi là tôi không có thông tin tốt về máy phát điện vì tôi là người mới trong python.
Hunar A.AHmed

đi qua bài viết trung bình này về việc sử dụng máy phát điện trong máy ảnh. Nó có thể giúp bạn có một ý tưởng
gavin

nó dễ dàng hơn nhiều trong các máy ảnh, nhưng mã của tôi được viết theo dòng thô và tôi không thể thay đổi nó thành máy ảnh.
Hunar A.AHmed

câu hỏi này từ stackoverflow sẽ giúp chắc chắn
gavin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.