2017-07-08 47 views
5

Tôi đã cố gắng xây dựng một mô hình tuần tự trong Keras bằng cách sử dụng lớp tổng hợp tf.nn.fractional_max_pool. Tôi biết tôi có thể thử làm cho lớp tùy chỉnh của riêng tôi trong Keras, nhưng tôi đang cố gắng để xem nếu tôi có thể sử dụng các lớp đã có trong Tensorflow. Đối với đoạn mã sau:Sử dụng các lớp Tensorflow trong Keras

p_ratio=[1.0, 1.44, 1.44, 1.0] 

model = Sequential() 
model.add(ZeroPadding2D((2,2), input_shape=(1, 48, 48))) 
model.add(Conv2D(320, (3, 3), activation=PReLU())) 
model.add(ZeroPadding2D((1,1))) 
model.add(Conv2D(320, (3, 3), activation=PReLU())) 
model.add(InputLayer(input_tensor=tf.nn.fractional_max_pool(model.layers[3].output, p_ratio))) 

Tôi nhận được điều này error. Tôi đã thử một số thứ khác với Input thay vì InputLayer và cũng là Keras Functional API nhưng cho đến nay không có may mắn.

+0

Làm tốt lắm. Tôi đề nghị di chuyển phần EDIT trong một câu trả lời (không có gì sai khi trả lời các câu hỏi của bạn trong SO) và chấp nhận nó. – desertnaut

+0

@desertnaut sẽ làm! –

Trả lời

5

Để thiết bị hoạt động. Để tham khảo trong tương lai, đây là cách bạn sẽ cần phải thực hiện nó. Kể từ tf.nn.fractional_max_pool trả 3 tensors, bạn cần phải nhận được chỉ là người đầu tiên:

model.add(InputLayer(input_tensor=tf.nn.fractional_max_pool(model.layers[3].output, p_ratio)[0])) 

Hoặc sử dụng lớp Lambda:

def frac_max_pool(x): 
    return tf.nn.fractional_max_pool(x,p_ratio)[0] 

Với mô hình thực hiện phúc:

model.add(Lambda(frac_max_pool)) 
Các vấn đề liên quan