2017-10-05 15 views
0

私はKerasを初めて使用しています。私はあらゆる時代にネットワークの出力を保存するつもりです。そのために、Tensorbaordを使用して環境内の出力レイヤーを観察したいと考えています。Kerasのコールバック機能により、すべてのエポックで予測される出力を保存します。

class OutputObserver(Callback): 
"""" 
callback to observe the output of the network 
""" 

    def on_train_begin(self, logs={}): 
     self.epoch = [] 
     self.out_log = [] 

    def on_epoch_end(self, epoch, logs={}): 
     self.epoch.append(epoch) 
     self.out_log.append(self.model.get_layer('Dense03/Output').output) 

出力テンソルをリストに格納します。問題は、1.これをNumpy配列に変換して、CSV、...ファイルを読み込むことができるようにします。2. Tensorflowを使用して要約を作成します(Kerasにはこの機能がありません)。テンソルボード。

トレーニングのあらゆる段階で出力層を保存して視覚化することについて、あなたの意見を聞いて嬉しく思います。

よろしくお願いいたします。 サイード。

+1

多分[この回答](https://stackoverflow.com/a/45321332/1531463) (** Edit **の後の部分)が役立ちます。 'on_epoch_end'でモデルを通して検証データを送ることで、TensorBoardで出力レイヤーを可視化します。 –

+0

@ゆうヤンありがとうございました。私はその答えが役に立つのを発見した。 –

答えて

2

エポックごとに出力レイヤを保存するには、トレーニング/検証データをコールバックオブジェクトに渡す必要があります。私が使用したコールバックは以下の通りです。

class OutputObserver(Callback): 
"""" 
callback to observe the output of the network 
""" 

def __init__(self, xy): 
    self.out_log = [] 
    self.xy = xy 

def on_epoch_end(self, epoch, logs={}): 
    self.out_log.append(self.model.predict(self.xy.x_train, batch_size=p.bath_size)) 

xy.x_trainはトレーニングデータです。

今、out_logアレイ形状のnumpy.ndarray(epoch_number、data_number、prediction_length)である:

type(prediction_logs[0]) 
Out[62]: numpy.ndarray 
関連する問題