Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tensorflow训练,每个历元两次_Python_Keras_Neural Network_Tensorflow2.0 - Fatal编程技术网

Python tensorflow训练,每个历元两次

Python tensorflow训练,每个历元两次,python,keras,neural-network,tensorflow2.0,Python,Keras,Neural Network,Tensorflow2.0,我已经编写了一个自定义TF模型(tensorflow 2.3.1),并正在使用.fit方法对其进行训练。当我称之为fit时,尽管该模型似乎每个历元训练两次。这很奇怪。更奇怪的是,它只发生在我使用组织超级计算机时,而不会发生在我的本地计算机上 以下是我的模型的代码: class-lstmodel(tf.keras.Model): def uuu init uuuu(自身、隐藏大小、梯度校正=False、lamb=1): """ :param hidden_size:[int]隐藏单位的数量 """

我已经编写了一个自定义TF模型(tensorflow 2.3.1),并正在使用
.fit
方法对其进行训练。当我称之为fit时,尽管该模型似乎每个历元训练两次。这很奇怪。更奇怪的是,它只发生在我使用组织超级计算机时,而不会发生在我的本地计算机上

以下是我的模型的代码:

class-lstmodel(tf.keras.Model):
def uuu init uuuu(自身、隐藏大小、梯度校正=False、lamb=1):
"""
:param hidden_size:[int]隐藏单位的数量
"""
super()。\uuuu init\uuuuu()
自梯度校正=梯度校正
self.lamb=羔羊
self.lstm\u layer=layers.lstm(隐藏大小,返回序列=True,
name='lstm_shared')
self.densite\u main=layers.densite(1,name='densite\u main')
self.densite\u aux=layers.densite(1,name='densite\u aux')
@功能
def呼叫(自我,输入,**kwargs):
x=self.lstm_层(输入)
干管预测=自密实干管(x)
aux_预测=自密_aux(x)
返回tf.concat([主预测,辅助预测],轴=2)
@功能
def系列步骤(自身、数据):
x、 y=数据
#如果我在开始梯度带之前不向前传球,
#事情悬而未决
_=self(x)
使用tf.GradientTape(persistent=True)作为磁带:
y_pred=自我(x,训练=正确)#向前传球
损失=rmse屏蔽一个变量(y,y\U pred,0)
损失=rmse屏蔽一个变量(y,y,1)
可训练变量=自可训练变量
主变量=获取变量(可训练变量,“密集变量”)
aux\u out\u vars=获取变量(可训练变量,“密集变量”)
共享变量=获取变量(可训练变量,“lstm共享”)
#获取渐变
gradient\u main\u out=磁带。渐变(丢失\u main,主\u out\u vars)
gradient\u aux\u out=磁带。梯度(损耗、辅助输出变量)
gradient\u shared\u main=磁带.梯度(丢失\u main,共享\u vars)
gradient\u shared\u aux=磁带.梯度(丢失\u aux,共享\u vars)
如果自校正:
#调整辅助梯度
gradient_shared_aux=调整_gradient_列表(gradient_shared_main,
渐变(共享)
组合梯度=组合梯度列表(梯度共享主、,
梯度(共享)(辅助),,
羔羊(self.lamb)
#应用渐变
self.optimizer.apply_渐变(zip(渐变、主渐变、主渐变)
self.optimizer.apply_梯度(zip(梯度、辅助变量))
self.optimizer.apply_梯度(zip(组合的_梯度,共享的_变量))
返回{'loss_main':loss_main,'loss_aux':loss_aux}
这是我执行
.fit()
时的输出:

你知道为什么每个时代训练两次吗

Epoch 1/10
Epoch 1/10
24/24 [==============================] - 2s 86ms/step - loss_main: 0.6247 - loss_aux: 0.2181
24/24 [==============================] - 2s 87ms/step - loss_main: 0.6202 - loss_aux: 0.2128
Epoch 2/10
Epoch 2/10
24/24 [==============================] - 2s 85ms/step - loss_main: 0.6286 - loss_aux: 0.2115
24/24 [==============================] - 2s 86ms/step - loss_main: 0.6286 - loss_aux: 0.2175
Epoch 3/10
Epoch 3/10
24/24 [==============================] - 2s 86ms/step - loss_main: 0.6352 - loss_aux: 0.2080
24/24 [==============================] - 2s 86ms/step - loss_main: 0.6344 - loss_aux: 0.2137
Epoch 4/10
Epoch 4/10
24/24 [==============================] - 2s 85ms/step - loss_main: 0.6373 - loss_aux: 0.2057
24/24 [==============================] - 2s 85ms/step - loss_main: 0.6314 - loss_aux: 0.2095
Epoch 5/10
Epoch 5/10
24/24 [==============================] - 2s 83ms/step - loss_main: 0.6382 - loss_aux: 0.2023
24/24 [==============================] - 2s 84ms/step - loss_main: 0.6373 - loss_aux: 0.2059