首页 文章

输出keras中的损失/成本函数

提问于
浏览
1

我想在Keras找到成本函数 . 我正在运行带有损失功能 categorical_crossentropy 的LSTM,并且我添加了一个正规化器 . 在我的Regularizer之后,如何为我自己的分析输出成本函数的样子?

model = Sequential()
model.add(LSTM(
    NUM_HIDDEN_UNITS,
    return_sequences=True,
    input_shape=(PHRASE_LEN, SYMBOL_DIM),
    kernel_regularizer=regularizers.l2(0.01)
    ))
model.add(Dropout(0.3))
model.add(LSTM(NUM_HIDDEN_UNITS, return_sequences=False))
model.add(Dropout(0.3))
model.add(Dense(SYMBOL_DIM))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy',
    optimizer=RMSprop(lr=1e-03, rho=0.9, epsilon=1e-08))

1 回答

  • 2

    在我的正规化器之后,我如何输出成本函数看起来像我自己的分析?

    当然,您可以通过获取要查看的图层的输出( yourlayer.output )并将其打印来实现此目的(请参阅here) . 然而,有更好的方法可视化这些东西 .

    见面Tensorboard .

    这是一个功能强大的可视化工具,使您能够跟踪和可视化您的指标,输出,体系结构,kernel_initializations等 . 好消息是,您已经可以使用Tensorboard Keras Callback用于此目的;你只需要导入它 . 要使用它,只需将Callback实例传递给 fit 方法,如下所示:

    from keras.callbacks import TensorBoard
    #indicate folder to save, plus other options
    tensorboard = TensorBoard(log_dir='./logs/run1', histogram_freq=1,
        write_graph=True, write_images=False)  
    
    #save it in your callback list
    callbacks_list = [tensorboard]
    #then pass to fit as callback, remember to use validation_data also
    model.fit(X, Y, callbacks=callbacks_list, epochs=64, 
        validation_data=(X_test, Y_test), shuffle=True)
    

    之后,通过执行以下命令启动Tensorboard服务器(它在您的PC上本地运行):

    tensorboard --logdir=logs/run1
    

    例如,这就是我的内核在我测试的两个不同模型上的样子(为了比较它们,你必须保存单独的运行,然后在父目录上启动Tensorboard) . 这是在我的第二层的直方图选项卡上:

    enter image description here

    left 上的模型用 kernel_initializer='random_uniform' 初始化,因此它的形状是一个均匀分布 . right 上的模型用 kernel_initializer='normal' 进行了初始化,因此它在我的时代(大约30)中出现为高斯分布的原因 .

    通过这种方式,您可以以比打印输出更具交互性和可理解性的方式可视化内核和图层的“外观” . 这只是Tensorboard的一大特色,它可以帮助您更快更好地开发深度学习模型 .

    当然,Tensorboard Callback和Tensorboard有更多选项,所以如果您决定尝试这一点,我建议您仔细阅读所提供的链接 . 有关详细信息,请查看thisalso this问题 .

    Edit: 所以,你评论你想知道你的正规化损失"looks"分析 . 让我们记住,通过向损失函数添加一个正则化器,我们基本上扩展了损失函数,以包含一些"penalty"或偏好 . 所以,如果你使用 cross_entropy 作为你的损失函数并添加一个权重为0.01的 l2 正则化器(即Euclidean Norm),你的整个损失函数将如下所示:

    enter image description here

相关问题