2017-06-22 210 views
1

我正在使用keras來訓練具有3層的我的順序模型,並且想要在TensorBoard中可視化梯度直方圖。爲此,在keras.callbacks.Tensorboard中有函數「write_grads」,如果您定義的histogram_freq大於0(keras docu),它應該可以工作。我所做的:如何使用TensorBoard write_grads函數?

### tensorboard call 
callback_tb = keras.callbacks.TensorBoard(log_dir="logs/"+ name, write_graph = True, write_grads = True, histogram_freq=10) 
### some other callbacks 
reduce_lr = keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=10, min_lr=0.001, verbose = 1) 
early = keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=5, patience=10, verbose=1, mode='auto') 
checkpointer = keras.callbacks.ModelCheckpoint(filepath='tmp/'+name+'.hdf5', verbose=1, save_best_only=True) 

### model fit 
model.fit(
     X_train, y_train, 
     batch_size=1, nb_epoch=epochs, validation_split=0.05, verbose = 1,class_weight ={0: 1, 1: 0.5}, callbacks = [callback_tb, reduce_lr, early, checkpointer]) 

我有這個模型configuartion:

model = Sequential() 
layers = [1, 100, 100, 100, 1] 

model.add(GRU(
     layers[1], 
     #batch_size = 209, 
     input_shape=(sequence_length, anzahl_features), 
     return_sequences=True)) 
model.add(Dropout(dropout_1)) 
model.add(LSTM(
     layers[2], 
     #batch_size = 209, 
     return_sequences=True)) 
model.add(Dropout(dropout_2)) 
model.add(GRU(
     layers[3], 
     #batch_size = 209, 
     return_sequences=False)) 
model.add(Dropout(dropout_3)) 
model.add(Dense(
     layers[4])) 
model.add(Activation('sigmoid')) 

print(model.summary()) 

和錯誤消息我得到的是以下之一:

TypeError: init() got an unexpected keyword argument 'write_grads'

是不是有什麼毛病我configuartion ?我可以使用此模型並獲取梯度直方圖 ?或者這些直方圖僅適用於某種類型的模型?

回答

2

您需要將Keras升級到最新版本(2.0.5)。以前的版本不支持write_grads參數。

pip install keras --upgrade

+0

只是另一個問題出現在那個話題上。目前只有偏移和內核在直方圖中可視化。我怎樣才能得到重量? –

+0

那麼內核就是權重。 – Francesco

+0

謝謝......現在也在文檔中找到它。 –