代码之家  ›  专栏  ›  技术社区  ›  Saeed

Keras-保存中间层的输出

  •  0
  • Saeed  · 技术社区  · 8 年前

    我使用下面的代码来实现我的keras模型:

    X, tx, Y, ty = train_test_split(X, Y, test_size=0.2, random_state=np.random.seed(7), shuffle=True)
    
    X = np.reshape(X, (X.shape[0], 1, X.shape[1]))
    tx = np.reshape(tx, (tx.shape[0], 1, tx.shape[1]))
    
    model = Sequential()
    model.add(LSTM(100, return_sequences=False, input_shape=(X.shape[1], X.shape[2])))
    model.add(Dense(Y.shape[1], activation='softmax'))
    model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
    filepath="weights-{epoch:02d}-{val_acc:.2f}.hdf5"
    checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')
    callbacks_list = [checkpoint]
    
    model.fit(X, Y, validation_split=.20,
                        epochs=1000, batch_size=50, callbacks=callbacks_list, verbose=0) 
    

    输出:

    以下是程序输出的一部分:

    Epoch 00993: val_acc did not improve
    Epoch 00994: val_acc did not improve
    Epoch 00995: val_acc did not improve
    Epoch 00996: val_acc did not improve
    Epoch 00997: val_acc did not improve
    Epoch 00998: val_acc improved from 0.93900 to 0.94543, saving model to weights-998-0.94.hdf5
    Epoch 00999: val_acc did not improve
    

    我需要保存输出的LSTM层在任何时代,但我不知道如何?

    你知道吗?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Novak    7 年前

    你可以用 Keras functional API . 你将不得不重写你的模型创建,但这不是很多工作。当你写下这样的话:

    lstm_output = LSTM(128, ...)(x)
    

    LSTM层的输出将在 lstm_output

    我希望这能回答你的问题。