Tensorflow 2:在训练期间获取张量值
我想在训练过程中得到张量的值,以计算表示之间的互信息;输入、输出 下面代码中的Tensorflow 2:在训练期间获取张量值,tensorflow,keras,deep-learning,tensorflow-datasets,tensorflow2.0,Tensorflow,Keras,Deep Learning,Tensorflow Datasets,Tensorflow2.0,我想在训练过程中得到张量的值,以计算表示之间的互信息;输入、输出 下面代码中的get\u mutual\u information(get\u tensors())应获取执行计算所需的张量值 我编写了另一个函数get\u tensors()来使用tf.compat.v1.get\u default\u graph().get\u tensor\u by\u name()来获取值,但是这个方法总是运行空列表 你知道在每个历元后得到张量的值吗?谢谢你,马哈茂德 代码如下: def get_tenso
get\u mutual\u information(get\u tensors())
应获取执行计算所需的张量值
我编写了另一个函数get\u tensors()
来使用tf.compat.v1.get\u default\u graph().get\u tensor\u by\u name()
来获取值,但是这个方法总是运行空列表
你知道在每个历元后得到张量的值吗?谢谢你,马哈茂德
代码如下:
def get_tensors():
tensors = []
names = []
# for tensor in tf.compat.v1.get_default_graph().as_graph_def().node:
# names.append(tensor.name)
for op in tf.compat.v1.get_default_graph().get_operations():
names.append(op.name)
names = [layer.name for layer in model.layers]
for name in names:
tensors.append(tf.compat.v1.get_default_graph().get_tensor_by_name("%s:0" % name))
return tensors
class Callback_1(tf.keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.mi_xt_all = []
self.mi_ty_all = []
self.epochs = []
def on_epoch_begin(self, epoch, logs={}):
print(get_tensors())
mi_xt, mi_ty = get_mutual_information(get_tensors())
self.mi_xt_all.append(mi_xt)
self.mi_ty_all.append(mi_ty)
self.epochs.append(epoch)
class Callback_2(tf.keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs={}):
if(logs.get('acc')>0.98):
self.model.stop_training = True
print("\nReached 99.8% accuracy so cancelling training!")
callbacks_list = [Callback_1(), Callback_2()]
def train_with_mi():
model.fit(x_train, y_train, validation_data=(x_test, y_test), epochs=100, callbacks=callbacks_list)