2016-01-12 19 views
5

Tôi hiện đang theo dõi hướng dẫn Multilayer Convolutional Network của TensorFlow.Trọng lượng trong mạng lưới chuyển đổi?

Trong lớp khác nhau trọng lượng được khởi tạo như sau:

  • Đầu tiên Convolutional lớp:

    W_conv1 = weight_variable([5, 5, 1, 32]) 
    
  • Second Convolutional lớp:

    W_conv2 = weight_variable([5, 5, 32, 64]) 
    
  • đông Connected Layer:

    W_fc1 = weight_variable([7 * 7 * 64, 1024]) 
    
  • Readout lớp:

    W_fc2 = weight_variable([1024, 10]) 
    

Vì vậy, tôi có nghi ngờ trong như thế nào là hình dạng của các biến trọng lượng trên được biết đến với chúng ta?

Toán học của họ có được sử dụng để tìm hình dạng cho chúng không?

Trả lời

8

Câu trả lời được giải thích trên cùng một trang:

Các xoắn sẽ tính 32 tính năng cho mỗi miếng vá 5x5. tensor trọng lượng của nó sẽ có hình dạng của [5, 5, 1, 32]

Không có mệnh toán liên quan nói, nhưng những điều khoản này cần giải thích

  1. Kích thước của hạt nhân chập là 5X5 . Điều đó có nghĩa là có một ma trận 5X5 được convolved bằng hình ảnh đầu vào bằng cách di chuyển hình ảnh xung quanh hình ảnh. Kiểm tra this link để biết giải thích về cách một ma trận 5X5 nhỏ di chuyển qua hình ảnh 28X28 và nhân các ô khác nhau của ma trận hình ảnh với chính nó. Điều này cho chúng tôi hai lần hiển thị đầu tiên của [5, 5, 1, 32]
  2. Kích thước của kênh đầu vào là 1. Đây là những hình ảnh BW, do đó một kênh đầu vào. Hầu hết các hình ảnh màu có 3 kênh, do đó, mong đợi một 3 trong một số mạng convolution khác hoạt động trên hình ảnh. Thật vậy, đối với lớp thứ hai, W_conv2, số lượng kênh đầu vào là 32, giống như số kênh đầu ra của lớp 1.
  3. Kích thước cuối cùng của ma trận trọng lượng có lẽ là khó nhất để hình dung. Hãy tưởng tượng ma trận 5X5 của bạn và sao chép nó 32 lần !. Mỗi trong số 32 thứ này được gọi là channels. Để hoàn thành cuộc thảo luận, mỗi ma trận 32 5X5 được khởi tạo với trọng số ngẫu nhiên và được huấn luyện độc lập trong quá trình truyền/chuyển tiếp ngược của mạng. Các kênh khác tìm hiểu các khía cạnh khác nhau của hình ảnh và do đó cung cấp thêm sức mạnh cho mạng của bạn.

Nếu bạn tóm tắt 3 điểm này, bạn sẽ có được kích thước mong muốn của lớp 1. Lớp tiếp theo là phần mở rộng - Hai kích thước đầu tiên là kích thước hạt nhân (5X5) trong trường hợp này.Thứ nguyên thứ ba bằng kích thước của kênh đầu vào, bằng với kích thước của kênh đầu ra của lớp trước đó. (32, kể từ khi chúng tôi khai báo 32 kênh đầu ra của lớp 1). Kích thước cuối cùng là kích thước của kênh đầu ra của lớp hiện tại (64, thậm chí là cho lớp thứ hai !. Một lần nữa, việc giữ một số lượng lớn các hạt nhân 5X5 độc lập sẽ giúp!).

Cuối cùng, hai lớp cuối cùng: lớp dày đặc cuối cùng là điều duy nhất có liên quan đến một số tính toán:

  1. Đối với mỗi lớp chập, kích thước cuối cùng = kích thước ban đầu
  2. Đối với lớp tổng hợp kích thước kXk, kích thước cuối cùng = kích thước ban đầu/k

Vì vậy,

  1. Đối conv1, kích thước vẫn 28 X 28
  2. pool1 làm giảm kích thước để 14 X 14
  3. Đối conv2, kích thước vẫn 14 X 14
  4. pool2 làm giảm kích thước để 7 X 7

Và dĩ nhiên, vì chúng tôi có 64 kênh do conv2 - tổng hợp không ảnh hưởng đến họ. Do đó, chúng tôi nhận được đầu vào cuối cùng dày đặc là 7X7X64. Sau đó, chúng tôi tạo các lớp ẩn hoàn toàn được kết nối 1024 và thêm 10 các lớp đầu ra cho 10 chữ số.

+1

Cảm ơn lời giải thích tuyệt vời. Bạn đã đề cập đến '32 thứ được gọi là kênh'; Tôi vẫn còn một chút nhầm lẫn với điều này, làm thế nào chúng ta sẽ quyết định nó phải là 32 và không 20 (như trong ví dụ này (http://neuralnetworksanddeeplearning.com/chap6.html#convolutional_neural_networks_in_practice)). – turtle

+2

Không có công thức cố định để quyết định số đó. Mỗi kênh tạo ra một đại diện trừu tượng trung gian của hình ảnh (một trong các cạnh, khác cho tương phản có thể) - nhiều hơn thường là tốt hơn, quá nhiều kênh làm cho nó chậm để tìm hiểu và gây ra overfitting –

+0

Được rồi, do đó, sẽ đi cho 1024 trong Densely Connected Layer ? – turtle

Các vấn đề liên quan