TensorBoard显示了先前模型中的许多“节点”

如何解决TensorBoard显示了先前模型中的许多“节点”

我正在训练基于MNIST数据的模型,并且正在使用张量板来可视化训练和验证损失。

这是我正在尝试的当前模型的代码:

model=tf.keras.models.Sequential()
#callback=tf.keras.callbacks.EarlyStopping(monitor='accuracy',min_delta=0,patience=0,verbose=0,mode='auto',restore_best_weights=False)
#model.add(tf.keras.layers.InputLayer(input_shape=[28,28]))

log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir,histogram_freq=1)

reduce_lr=tf.keras.callbacks.ReduceLROnPlateau(
    monitor='val_loss',factor=0.1,patience=5,min_delta=0.0001,cooldown=0,min_lr=0)

optimizer=tf.keras.optimizers.Adam(learning_rate=0.001,beta_1=0.9,beta_2=0.999,epsilon=1e-07,amsgrad=True,name='Adam',clipnorm=5)

# if hparams[HP_OPTIMIZER]=='adam':
#     optimizer=tf.keras.optimizers.Adam(learning_rate=0.001,#     name='Adam',clipnorm=5)

# elif hparams[HP_OPTIMIZER]=='sgd':
#     tf.keras.optimizers.SGD(learning_rate=0.01,momentum=0.9,nesterov=False,name='SGD',**kwargs)
    

model.add(tf.keras.layers.Flatten(input_shape=[28,28]))
l2_new=tf.keras.regularizers.L2(
    l2=0.05)


model.add(tf.keras.layers.BatchNormalization(
    axis=-1,momentum=0.99,epsilon=0.001,center=True,scale=True,beta_initializer='zeros',gamma_initializer='ones',moving_mean_initializer='zeros',moving_variance_initializer='ones',beta_regularizer=None,gamma_regularizer=None,beta_constraint=None,gamma_constraint=None,renorm=True,renorm_clipping=None,renorm_momentum=0.99))



model.add(tf.keras.layers.Dense(300,activation='relu',kernel_initializer="he_normal",kernel_regularizer=l2_new,bias_regularizer=l2_new))

model.add(tf.keras.layers.BatchNormalization(
    axis=-1,renorm_momentum=0.99))


model.add(tf.keras.layers.Dense(300,renorm_momentum=0.99))


model.add(tf.keras.layers.Dense(10,activation='softmax'))

对不起,如果有点混乱。我基本上是用

创建一个顺序模型
  1. 拼合输入层
  2. 批处理规范层 3.300个神经元致密层
  3. 批处理规范层
  4. 300个神经元致密层
  5. 批处理规范层
  6. 具有10个神经元的Softmax输出层。

我的模型还使用了“亚当”优化器和学习率衰减。

当我在张量板的graphs子标题下查看模型时,得到以下图片:

TensorBoard under graphs subheading

您可以看到,有很多“节点”,我猜这是因为我已经训练了多个模型。如何摆脱以前的所有尝试。

我尝试使用del modeltf.keras.backend.clear_session(),但是它们没有用。

编辑:我已按照“ Aniket Bote”的建议删除了日志。这是新的输出:

New Output

我仍然不确定它是正确的。从我的代码中,我认为我的图不应该像所示那样具有2个分支,而且我仍然在右侧获得了大批的批处理规范化“节点”。

解决方法

第二个分支本身不是图,而是一个子图
Tensorflow生成其执行的操作的图形,以加快代码的执行速度。如果单击那些,您会看到它们是批处理规范化层(而不是该层本身)所使用的功能。您可以在主图中看到所有图层信息。

如果您不希望这些节点,可以通过将BatchNormalization的可训练属性设置为False来摆脱它们。

在这种情况下,该层的权重不会改变,并且TensorFlow将不再需要为该层计算任何东西。将不会生成任何功能节点。

代码:

import tensorflow as tf
import numpy as np

np.random.seed(100)
x = tf.constant(np.random.randint(50,size =(1000,28,28)),dtype = tf.float32)
y = tf.constant(np.random.randint(10,)),dtype = tf.int32)

model=tf.keras.models.Sequential()
log_dir = "logs"
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir,histogram_freq=1,profile_batch = 0)

optimizer=tf.keras.optimizers.Adam(learning_rate=0.001,beta_1=0.9,beta_2=0.999,epsilon=1e-07,amsgrad=True,name='Adam',clipnorm=5)

model.add(tf.keras.layers.Flatten(input_shape=[28,28]))
l2_new=tf.keras.regularizers.L2(
    l2=0.05)


model.add(tf.keras.layers.BatchNormalization(
    axis=-1,momentum=0.99,epsilon=0.001,center=True,scale=True,beta_initializer='zeros',gamma_initializer='ones',moving_mean_initializer='zeros',moving_variance_initializer='ones',beta_regularizer=None,gamma_regularizer=None,beta_constraint=None,gamma_constraint=None,renorm=True,renorm_clipping=None,renorm_momentum=0.99,trainable = False))



model.add(tf.keras.layers.Dense(300,activation='relu',kernel_initializer="he_normal",kernel_regularizer=l2_new,bias_regularizer=l2_new))

model.add(tf.keras.layers.BatchNormalization(
    axis=-1,trainable = False))


model.add(tf.keras.layers.Dense(300,trainable = False))


model.add(tf.keras.layers.Dense(10,activation='softmax'))


model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
tf.keras.utils.plot_model(model,'my_first_model.png',show_shapes=True)

model.fit(x,y,epochs = 10,callbacks = tensorboard_callback)

输出:

Epoch 1/10
32/32 [==============================] - 0s 10ms/step - loss: 89.0275 - accuracy: 0.1100
Epoch 2/10
32/32 [==============================] - 0s 9ms/step - loss: 56.7906 - accuracy: 0.1310
Epoch 3/10
32/32 [==============================] - 0s 9ms/step - loss: 48.5681 - accuracy: 0.1490
Epoch 4/10
32/32 [==============================] - 0s 9ms/step - loss: 42.8176 - accuracy: 0.1850
Epoch 5/10
32/32 [==============================] - 0s 9ms/step - loss: 38.5857 - accuracy: 0.2110
Epoch 6/10
32/32 [==============================] - 0s 9ms/step - loss: 35.1675 - accuracy: 0.2540
Epoch 7/10
32/32 [==============================] - 0s 9ms/step - loss: 32.3327 - accuracy: 0.2750
Epoch 8/10
32/32 [==============================] - 0s 9ms/step - loss: 29.8839 - accuracy: 0.3420
Epoch 9/10
32/32 [==============================] - 0s 9ms/step - loss: 27.7426 - accuracy: 0.3940
Epoch 10/10
32/32 [==============================] - 0s 10ms/step - loss: 25.6565 - accuracy: 0.4930

张量板图图像: tensorboard

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-