2017-09-25 6 views
1

Keras로 맞춤 초기화 프로그램을 만들었습니다. 코드의 일부이다 :이 오류가 발생Keras에서 get_variable을 사용하여 사용자 정의 초기화 프로그램을 만드는 중 오류가 발생했습니다.

"my_init"초기화가 컨벌루션 층 두번째라고
def my_init(shape): 
    P = tf.get_variable("P", shape=shape, initializer = tf.contrib.layers.xavier_initializer()) 
    return P 

model = Sequential() 
model.add(Conv2D(32, kernel_size=(5, 5),strides=(1, 1), padding='same', input_shape = input_shape, kernel_initializer = my_init)) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Conv2D(32, kernel_size=(1, 1) , strides=(1, 1) , padding='same' , kernel_initializer = my_init)) 

:이 변수 P. 재사용 허용되지

Variable P already exists, disallowed. Did you mean to set reuse=True in VarScope? Originally defined at: 

각 호출에서 새 변수를 만들 수있는 방법이 있습니까?

+0

당신은'K.variable (...)를'시도 할 수 있습니다. 이름이 필요하지 않습니다. ---'keras.backend as K'를 임포트하십시오. –

+0

tensorflow (tf.contrib.layers.xavier_initializer())에서 사용할 수있는 "xavier"이니셜 라이저를 사용해야하지만 k.variable에서 xavier initializer를 호출 할 수 없습니다. – Darshi

답변

1

케라에서 사용 가능한 Xavier 이니셜 라이저를 glorot_uniformglorot_normal이라는 이름으로 사용해 볼 수 있습니다.

는 여기를 참조하십시오 https://keras.io/initializers/

model.add(Conv2D(32, kernel_size=(1, 1) , strides=(1, 1) , 
      padding='same' , kernel_initializer =keras.initializers.glorot_uniform())