Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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 在tensorflow2.0中,如果我使用tf.keras.models.Model。我可以通过模型训练批次的数量来评估和保存模型吗?_Python_Tensorflow_Keras_Tensorflow2.0 - Fatal编程技术网

Python 在tensorflow2.0中,如果我使用tf.keras.models.Model。我可以通过模型训练批次的数量来评估和保存模型吗?

Python 在tensorflow2.0中,如果我使用tf.keras.models.Model。我可以通过模型训练批次的数量来评估和保存模型吗?,python,tensorflow,keras,tensorflow2.0,Python,Tensorflow,Keras,Tensorflow2.0,现在我正在使用tf.keras下的接口来封装我的CNN(卷积神经网络) 在model.fit界面中,我发现参数validation\u freq只提供epoch选项。这意味着在训练模型时,只能在训练一个或多个历元后评估和保存模型。在许多情况下,更希望根据模型训练批次的数量评估和保存模型。model.fit或model.fit\u generator现在是否提供此选项?您可以通过如下方式实现自定义回调: 将tensorflow导入为tf 打印(tf.uuu版本)#2.1.0 类PerBatchLo

现在我正在使用
tf.keras
下的接口来封装我的CNN(卷积神经网络)


model.fit
界面中,我发现参数
validation\u freq
只提供
epoch
选项。这意味着在训练模型时,只能在训练一个或多个历元后评估和保存模型。在许多情况下,更希望根据模型训练批次的数量评估和保存模型。
model.fit
model.fit\u generator
现在是否提供此选项?

您可以通过如下方式实现自定义回调:

将tensorflow导入为tf
打印(tf.uuu版本)#2.1.0
类PerBatchLogsCallback(tf.keras.callbacks.Callback):
定义初始(自,x\U测试,y\U测试,间隔=2):
self.x_测试=x_测试
self.y_测试=y_测试
self.n_批=0
self.interval=间隔
self.all_日志=无
批处理端上的def(自身、批处理、日志=无):
如果self.all_日志为无:
self.all_日志={name:[]表示self.model.metrics_names}中的名称
self.all_日志['batch']=[]
如果self.n\u批次%self.interval==0:
评估=自我模型评估(自我x_测试、自我y_测试)
对于e,zip中的名称(已评估,self.model.metrics\u名称):
self.all_日志[name].append(e)
self.all_日志['batch'].追加(批处理)
self.n_批次+=1
每两个批次评估验证指标的使用示例:

将tensorflow导入为tf
将numpy作为np导入
输入=tf.keras.layers.Input((2,))
res=tf.keras.layers.density(2,激活=tf.nn.softmax)(输入)
模型=tf.keras.model(输入,res)
compile(optimizer=tf.keras.optimizers.SGD(0.001),
指标=[“准确度”],
损失(稀疏的、分类的、交叉熵的)
x_序列=np.随机.正常(0,1,(10,2))
y_train=np.random.randint(0,2,10)
x_检验=np.随机.正常(0,1,5,2))
y_检验=np.random.randint(0,2,5)
批处理回调=每个批处理logscallback(x\u测试,y\u测试)
模型安装(x_系列,
你的火车,
批次大小=2,
纪元=1,
回调=[批处理回调])
打印(批处理\u回调。所有\u日志)
#{‘损失’:[0.3391808867454529、0.33950310945510864、0.3395831882953644],
#“准确度”:[1.0,1.0,1.0],
#“批处理”:[0,2,4]}