2017-05-25 29 views
5

Tôi đang sử dụng phụ trợ tensorflow.Lớp phẳng hoạt động như thế nào trong keras?

Áp dụng chập chùng, tăng tối đa, làm phẳng và lớp dày đặc theo tuần tự. convolution yêu cầu đầu vào 3D (chiều cao, chiều rộng, color_channels_depth).

Sau khi việc chuyển đổi này trở thành (chiều cao, chiều rộng, số_of_filters).

Sau khi áp dụng chiều cao kết hợp tối đa, thay đổi chiều rộng. Nhưng sau khi áp dụng lớp phẳng, điều gì xảy ra chính xác? ví dụ.

Nếu đầu vào trước khi làm phẳng là (24,24,32) thì làm thế nào để làm phẳng nó ra?

Có tuần tự như (24 * 24) cho chiều cao, trọng lượng cho mỗi số bộ lọc theo tuần tự hoặc theo một cách khác không? một ví dụ sẽ được đánh giá cao với giá trị thực tế.

Trả lời

12

Nhà điều hành Flatten() unrolls các giá trị bắt đầu từ chiều qua (ít nhất là cho Theano, đó là "các kênh truyền hình đầu tiên", không phải "các kênh truyền hình cuối cùng" như TF. Tôi không thể chạy TensorFlow trong môi trường của tôi). Đây là tương đương với numpy.reshape với 'C' đặt hàng: phương tiện

'C' để đọc/ghi các yếu tố sử dụng để chỉ số C-like, với chỉ số trục cuối cùng thay đổi nhanh nhất, trở lại chỉ số trục đầu tiên thay đổi chậm nhất.

Dưới đây là ví dụ độc lập minh họa toán tử Flatten với API chức năng Keras. Bạn sẽ có thể dễ dàng thích nghi với môi trường của bạn.

import numpy as np 
from keras.layers import Input, Flatten 
from keras.models import Model 
inputs = Input(shape=(3,2,4)) 

# Define a model consisting only of the Flatten operation 
prediction = Flatten()(inputs) 
model = Model(inputs=inputs, outputs=prediction) 

X = np.arange(0,24).reshape(1,3,2,4) 
print(X) 
#[[[[ 0 1 2 3] 
# [ 4 5 6 7]] 
# 
# [[ 8 9 10 11] 
# [12 13 14 15]] 
# 
# [[16 17 18 19] 
# [20 21 22 23]]]] 
model.predict(X) 
#array([[ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 
#   11., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., 
#   22., 23.]], dtype=float32) 
+0

Đây là câu trả lời ngắn gọn về cách Flatten hoạt động. – nafizh

1

Nó tuần tự như 24 * 24 * 32 và định dạng lại nó như được hiển thị trong mã sau.

def batch_flatten(x): 
    """Turn a nD tensor into a 2D tensor with same 0th dimension. 
    In other words, it flattens each data samples of a batch. 
    # Arguments 
     x: A tensor or variable. 
    # Returns 
     A tensor. 
    """ 
    x = tf.reshape(x, tf.stack([-1, prod(shape(x)[1:])])) 
    return x 
Các vấn đề liên quan