"TypeError: 'Session' object is not callable" error running sess = tf.compat.v1.Session()(graph=tf.compat.v1.get_default_graph(), config=session_conf)

"TypeError: 'Session' object is not callable" error running sess = tf.compat.v1.Session()(graph=tf.compat.v1.get_default_graph(), config=session_conf)

我正在尝试设置种子并配置 keras 设置以确保我的实验可重现。当我 运行 以下内容时(基于对 this question 的回答中的代码):

# Import libraries
import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow.keras.models import load_model
from tensorflow.keras.regularizers import l2

# for setting seeds and configuring keras so that experiments are reproducible
from numpy.random import seed
import random as rn
import os
from tensorflow.keras import backend as K

seed_num = 1

os.environ['PYTHONHASHSEED'] = '0'
np.random.seed(seed_num)
rn.seed(seed_num)

session_conf = tf.compat.v1.ConfigProto(intra_op_parallelism_threads=1, inter_op_parallelism_threads=1)

tf.random.set_seed(seed_num)

sess = tf.compat.v1.Session()(graph=tf.compat.v1.get_default_graph(), config=session_conf)
K.set_session(sess)

...发生错误:

TypeError: 'Session' object is not callable

我需要更改什么才能成功实现 运行 并确保我的实验可重现?

我在 Mac.Mac 上的 Jupyter Notebook 中 运行ning tensorflow 版本 2.1.0。

在倒数第二行,您可能希望使用参数 graphconfig 构造一个 Session 对象,而不是 call一个Session.

改变这个:

sess = tf.compat.v1.Session()(graph=tf.compat.v1.get_default_graph(), config=session_conf)

对此:

sess = tf.compat.v1.Session(graph=tf.compat.v1.get_default_graph(), config=session_conf)

您还需要更改第十四行的代码:

from tensorflow.compat.v1.keras import backend as K

从 Tensorflow 2.0 开始,Keras 不再像以前那样在后端公开会话。您可以使用 compat.v1 API 来解决这个问题,但这很快就会被弃用。