내가 사용하여 Windows10,Python3.5 고 tensorflow1.1.0. 나는 다음과 같은 스크립트:
import tensorflow as tf
import tensorflow.contrib.keras.api.keras.backend as K
from tensorflow.contrib.keras.api.keras.layers import Dense
tf.reset_default_graph()
init = tf.global_variables_initializer()
sess = tf.Session()
K.set_session(sess) # Keras will use this sesssion to initialize all variables
input_x = tf.placeholder(tf.float32, [None, 10], name='input_x')
dense1 = Dense(10, activation='relu')(input_x)
sess.run(init)
dense1.get_weights()
나는 오류:AttributeError:'텐서'객체의 특성이 없'무게'
나는 무엇을 잘못하고,그리고 어떻게 가중치의dense1
? 내가 보기에는 이](https://stackoverflow.com/questions/42053170/keras-how-can-i-get-biasess-weights 고)[this](https://stackoverflow.com/questions/42411891/how-to-extract-bias-weights-in-keras-sequential-model 다)그래서 포스트,하지만 나는 아직도 할 수 있't 작동합니다.
을 얻고 싶은 경우량과 편견의 모든 층에,당신은 단순히 사용:
for layer in model.layers: print(layer.get_config(), layer.get_weights())
이 모든 정보를 인쇄하는's 관련이 있습니다.
당신이 원하는 무게 직접적으로 반환 numpy 배열을 사용할 수 있습니다:
first_layer_weights = model.layers[0].get_weights()[0]
first_layer_biases = model.layers[0].get_weights()[1]
second_layer_weights = model.layers[1].get_weights()[0]
second_layer_biases = model.layers[1].get_weights()[1]
etc.
당신이 쓰는 경우:
dense1=밀도(10,인증='relu')(input_x)
다음dense1
지 않은 층,it's 의 출력 레이어입니다. 레이밀도(10,인증='relu')
그래서 그것은 것을 의미:
dense1 = Dense(10, activation='relu')
y = dense1(input_x)
여기에는 풀 snippet:
import tensorflow as tf
from tensorflow.contrib.keras import layers
input_x = tf.placeholder(tf.float32, [None, 10], name='input_x')
dense1 = layers.Dense(10, activation='relu')
y = dense1(input_x)
weights = dense1.get_weights()
를 보시려면 어떻게 무게와 편견의 층 시간이 지나도 변경,추가할 수 있습니다 콜백을 기록하는 값에서 각 교육 epoch.
는 모델을 사용하는 이 같은 예를 들어,
가져오기 numpy 로 np 모델=순차적([밀도(16,input_shape=(train_inp_s.모[1:])),밀도(12),밀도(6),고밀도(1)])
추가 콜백**kwarg 동안 피팅:
gw=GetWeights() 모델입니다.맞(X,y,validation_split=0.15,epochs=10,batch_size=100,콜백=[gw])
는 콜백에 의해 정의 `` 클래스 GetWeights(Callback):
definit(자): super(GetWeights,자).init() 자체입니다.weight_dict={}
def on_epoch_end(자가,epoch,로그=None):
에 대한 layer_i 범위(len(자체입니다.모델입니다.층)으): w=self.모델입니다.층[layer_i].get_weights()[0] b=self.모델입니다.층[layer_i].get_weights()[1] 인쇄('층%s 는 무게의 모양%s 과 편견의 형태%s'%( layer_i,np.형상(w),np.shape(b)))
는 경우 epoch==0:
자체입니다.weightdict['w'+str(layer_i+1)]=w 자체입니다.weight_dict['b'+str(layer_i+1)]=b 다른 사람:
자체입니다.weightdict['w'+str(layer_i+1)]=np.dstack( (self.weightdict['w'+str(layer_i+1)],w))
자체입니다.weight_dict['b'+str(layer_i+1)]=np.dstack( (self.weight_dict['b'+str(layer_i+1)]b)) ``
이러 콜백을 구축 할 것입니다 사전으로 모든 레게와 편견을 분류하여 계층의 숫자,그래서 당신은 당신이 볼 수 있는 방법들이 시간이 지나도 변경으로 모델이 되는 훈련을 받았습니다. You'을 주목의 모양 각각의 중량과 바이어스 배의 모양에 따라 달라집 모델층이다. 하나 무게 배열하고 하나의 바이어스 배열로 저장되는 각 계층에서의 모델입니다. 세 번째 축(깊이)그들의 진화를 통한 시간입니다.
여기서 우리는 10 의 시대와는 모델의 층으로 16,12,6,및 1 개의 신경 세포: `` 키에 gw.weight_dict: 인쇄(str(키)+'shape:%s'%str(np.shape(gw.weight_dict[key])))
w_1 모양:(5,16,10) b_1 모양:(1,16,10) w_2 모양:(16,12,10) b_2 모양:(1,12,10) w_3 모양:(12,6,10) b_3 모양:(1,6,10) w_4 모양:(6,1,10) b_4 모양:(1,1,10) ``