我在TensorBoard上使用TensorFlow回调来进行可视化。
tensorboard = tf.keras.callbacks.TensorBoard( log_dir='logs', histogram_freq=1, write_graph=True, write_images=True, update_freq='epoch', profile_batch=2, embeddings_freq=1, )
我使用了一个简单的模型,并使用数据管道作为模型的输入。这里特征层包含每个特征的feature_columns:
model = tf.keras.Sequential([ feature_layer, tf.keras.layers.Dense(units = 12, activation='relu', use_bias = True, kernel_initializer= 'glorot_uniform', bias_initializer = 'zeros'), tf.keras.layers.Dense(units = 6, activation='relu', use_bias = True, kernel_initializer= 'glorot_uniform', bias_initializer = 'zeros'), tf.keras.layers.Dense(units = 2, activation='softmax') ])
我使用Adam作为优化器,稀疏分类交叉熵作为损失函数,准确率作为评估指标。这里是我的TensorBoard图表:
红线 = 训练 蓝线 = 验证
我的问题是为什么显示的训练步骤少于验证步骤。
回答:
如果你查看TensorFlow文档中关于tf.keras.callbacks.TensorBoard的部分,在profile_batch
参数的说明下,有如下描述 –
profile_batch
:分析批次以采样计算特征。profile_batch必须是非负整数或由正整数对组成的逗号分隔字符串。正整数对表示要分析的批次范围。默认情况下,它将分析第二个批次。设置profile_batch=0以禁用分析。必须在TensorFlow急切模式下运行。
由于你设置了profile_batch=2
,因此它只显示第二个批次的结果。
示例 –
# 分析单个批次,例如第5个批次。tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir='./logs', profile_batch=5)model.fit(x_train, y_train, epochs=2, callbacks=[tensorboard_callback])# 运行tensorboard命令查看配置文件插件中的可视化结果。# 分析一系列批次,例如从10到20。tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir='./logs', profile_batch='10,20')model.fit(x_train, y_train, epochs=2, callbacks=[tensorboard_callback])# 运行tensorboard命令查看配置文件插件中的可视化结果。
设置profile_batch=0
以禁用分析。必须在TensorFlow急切模式下运行。