2017-05-09 3 views
2

나는 훈련 된 네트워크에서 레이어의 값을 얻으려고합니다. 나는 TensorFlow 텐서와 같은 레이어를 얻을 수 있습니다,하지만 난 배열 형태의 값에 액세스 할 수 없습니다 해요 :Keras - 훈련 된 레이어의 무게를 얻습니다.

from keras.models import load_model 

model = load_model('./model.h5') 
layer_dict = dict([(layer.name, layer) for layer in model.layers]) 

layer_name = 'block5_sepconv1_act' 
filter_index = 0 

layer_output = layer_dict['model_1'][layer_name].output 
# <tf.Tensor 'block5_sepconv1_act/Relu:0' shape=(?, 16, 16, 728) dtype=float32> 
layer_filter = layer_output[:, :, :, filter_index] 
# <tf.Tensor 'strided_slice_11:0' shape=(?, 16, 16) dtype=float32> 
# how do I get the 16x16 values ?? 
+2

출력 값 또는 가중치를 원하십니까? 그들은 동일하지 않습니다. –

답변

2

당신이 tensorflow 백엔드를 사용하는 경우 그냥 가중치를 검색 할 경우, 당신은 무게를 평가할 수, 올바른 입력

import keras.backend as K 

input_value = np.zeros(size=(batch_size, input_dim)) 
sess = K.get_session() 
output = sess.run(layer_output, feed_dict={model.input: input_value}) 

을 현재 세션 sess을 사용하고 먹이 텐서의 가치를 평가할 수있다

2

.get_weights()는 NumPy와 배열

layer_dict[layer_name].get_weights() 
같은 특정 층 또는 모델의 무게를 반환합니다

레이어 출력을 원하면 here 질문에 대한 답변을 확인하십시오.