美文网首页keras学习
keras+TensorBoard实现训练可视化

keras+TensorBoard实现训练可视化

作者: 杰克波比 | 来源:发表于2018-05-09 11:29 被阅读2085次
    # 引入Tensorboard
    from keras.callbacks import TensorBoard
    
    tbCallBack = TensorBoard(log_dir='./logs',  # log 目录
                     histogram_freq=0,  # 按照何等频率(epoch)来计算直方图,0为不计算
    #                  batch_size=32,     # 用多大量的数据计算直方图
                     write_graph=True,  # 是否存储网络结构图
                     write_grads=True, # 是否可视化梯度直方图
                     write_images=True,# 是否可视化参数
                     embeddings_freq=0, 
                     embeddings_layer_names=None, 
                     embeddings_metadata=None)
    
    model.fit(...inputs and parameters..., callbacks=[tbCallBack])
    

    通过引入tensorboard加入了回调函数的功能。 它将在训练期间运行并输出可用于张量板的文件。如果您想要在训练的过程中可视化,请在terminal终端输入

    tensorboard --logdir ./logs 
    

    然后在浏览器中访问http://localhost:6006

    image.png

    完整代码如下:
    keras/examples/mnist_mlp.py示例代码修改

    from __future__ import print_function
    
    import keras
    from keras.datasets import mnist
    from keras.models import Sequential
    from keras.layers import Dense, Dropout
    from keras.optimizers import RMSprop
    
    # 引入Tensorboard
    from keras.callbacks import TensorBoard
    
    batch_size = 128
    num_classes = 10
    epochs = 20
    
    # the data, split between train and test sets
    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    
    x_train = x_train.reshape(60000, 784)
    x_test = x_test.reshape(10000, 784)
    x_train = x_train.astype('float32')
    x_test = x_test.astype('float32')
    x_train /= 255
    x_test /= 255
    print(x_train.shape[0], 'train samples')
    print(x_test.shape[0], 'test samples')
    
    # convert class vectors to binary class matrices
    y_train = keras.utils.to_categorical(y_train, num_classes)
    y_test = keras.utils.to_categorical(y_test, num_classes)
    
    model = Sequential()
    model.add(Dense(512, activation='relu', input_shape=(784,)))
    model.add(Dropout(0.2))
    model.add(Dense(512, activation='relu'))
    model.add(Dropout(0.2))
    model.add(Dense(num_classes, activation='softmax'))
    
    model.summary()
    
    model.compile(loss='categorical_crossentropy',
                  optimizer=RMSprop(),
                  metrics=['accuracy'])
    
    tbCallBack = TensorBoard(log_dir='./logs',  # log 目录
                     histogram_freq=0,  # 按照何等频率(epoch)来计算直方图,0为不计算
    #                  batch_size=32,     # 用多大量的数据计算直方图
                     write_graph=True,  # 是否存储网络结构图
                     write_grads=True, # 是否可视化梯度直方图
                     write_images=True,# 是否可视化参数
                     embeddings_freq=0, 
                     embeddings_layer_names=None, 
                     embeddings_metadata=None)
    
    history = model.fit(x_train, y_train,
                        batch_size=batch_size,
                        epochs=epochs,
                        verbose=1,
                        validation_data=(x_test, y_test),
                        callbacks=[tbCallBack])
    score = model.evaluate(x_test, y_test, verbose=0)
    print('Test loss:', score[0])
    print('Test accuracy:', score[1])
    

    相关文章

      网友评论

        本文标题:keras+TensorBoard实现训练可视化

        本文链接:https://www.haomeiwen.com/subject/qarnrftx.html