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)