2017-02-20 3 views
0

keras blog에 대한 자세한 게시물이 있습니다.
그러나 다음과 같이 내가 오류를 얻을 때 코드를 컴파일 : 나는 dim_ordering='th'을 설정할 때
keras 및 tensorflow를 백엔드로 사용하여 회선 신경망에 입력 시각화

Using TensorFlow backend. 
Traceback (most recent call last): 
    File "visulaize_cifar.py", line 24, in <module> 
    model.add(MaxPooling2D((2, 2), strides=(2, 2))) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/keras/models.py", line 332, in add 
    output_tensor = layer(self.outputs[0]) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/keras/engine/topology.py", line 572, in __call__ 
    self.add_inbound_node(inbound_layers, node_indices, tensor_indices) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/keras/engine/topology.py", line 635, in add_inbound_node 
    Node.create_node(self, inbound_layers, node_indices, tensor_indices) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/keras/engine/topology.py", line 166, in create_node 
    output_tensors = to_list(outbound_layer.call(input_tensors[0], mask=input_masks[0])) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/keras/layers/pooling.py", line 160, in call 
    dim_ordering=self.dim_ordering) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/keras/layers/pooling.py", line 210, in _pooling_function 
    pool_mode='max') 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py", line 2866, in pool2d 
    x = tf.nn.max_pool(x, pool_size, strides, padding=padding) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/tensorflow/python/ops/nn_ops.py", line 1617, in max_pool 
    name=name) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/tensorflow/python/ops/gen_nn_ops.py", line 1598, in _max_pool 
    data_format=data_format, name=name) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 759, in apply_op 
    op_def=op_def) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2242, in create_op 
    set_shapes_for_outputs(ret) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1617, in set_shapes_for_outputs 
    shapes = shape_func(op) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1568, in call_with_requiring 
    return call_cpp_shape_fn(op, require_shape_fn=True) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/tensorflow/python/framework/common_shapes.py", line 610, in call_cpp_shape_fn 
    debug_python_shape_fn, require_shape_fn) 
    File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/tensorflow/python/framework/common_shapes.py", line 675, in _call_cpp_shape_fn_impl 
    raise ValueError(err.message) 
ValueError: Negative dimension size caused by subtracting 2 from 1 for 'MaxPool_1' (op: 'MaxPool') with input shapes: [1,1,64,128]. 

이 오류는 간다.
그러나 tensorflow 백엔드를 사용할 때 차원 순서는 dim_ordering='tf'이어야합니다. 다음과 같이 vgg16_weights.h5에서 loading weights 동안
심지어 '일'로 dim_ordering을 설정 한 후, 나는 오류 : '일'과 'TF'에 대한 this post에서

Traceback (most recent call last): 
File "visulaize_cifar.py", line 67, in <module> 
    model.layers[k].set_weights(weights) 
File "/home/dude_perf3ct/.local/lib/python2.7/site-packages/keras/engine/topology.py", line 985, in set_weights 
    'provided weight shape ' + str(w.shape)) 
ValueError: Layer weight shape (3, 3, 128, 64) not compatible with provided weight shape (64, 3, 3, 3). 

상세한.
위의 오류는 레이어 가중치가 'tf'에 있음을 의미합니다 (그러나 첫 번째 오류가 발생하지 않도록 'th'로 설정 함). 'th'순서로 가중치 모양을 제공합니다.
What seems to be the error?

답변

0

이 질문에 대한 답변은 매우 간단합니다. 마찬가지로, 나는 tensorflow을 백엔드로 사용하고있었습니다. 변환하려면, 내가 라인을 삽입
if K.backend()=='tensorflow': K.set_image_dim_ordering("th")
from keras import backend as K 뒤에.
vgg16_weights.h5의 형식이 th이고 cifar10.load_data()이기 때문입니다.

관련 문제