训练使用tensorflow.keras.Model和keras函数API设计的网络会导致Python崩溃

训练使用tensorflow.keras.Model和keras函数API设计的网络会导致Python崩溃,python,deep-learning,tensorflow2.0,tf.keras,Python,Deep Learning,Tensorflow2.0,Tf.keras,-Keras版本:2.3.1 -Tensorflow版本:2.2.0 -操作系统:Windows 10 -运行于:CPU处理器Intel(R)Core(TM)i7-8850H -发展于:PyCharm -Python版本:3.7 我尝试过几次培训使用keras函数API设计的网络,但是培训总是导致python崩溃,并显示以下退出消息: Process finished with exit code -1073740791 (0xC0000409) 没有提供其他堆栈跟踪。下面是我尝试运行的代码的

-Keras版本:2.3.1 -Tensorflow版本:2.2.0 -操作系统:Windows 10 -运行于:CPU处理器Intel(R)Core(TM)i7-8850H -发展于:PyCharm -Python版本:3.7

我尝试过几次培训使用keras函数API设计的网络,但是培训总是导致python崩溃,并显示以下退出消息:

Process finished with exit code -1073740791 (0xC0000409)
没有提供其他堆栈跟踪。下面是我尝试运行的代码的简化版本:

将scipy.io导入为io
导入操作系统
将numpy作为np导入
从tensorflow.keras导入图层、损耗和输入
从tensorflow.keras.models导入模型
目录='C:\\Dataset'
def简单_生成器(dim1、dim2、dim3,批次大小=5):
尽管如此:
样本=np.随机。随机样本((批次大小,dim1,dim2,dim3))
目标=np.随机.随机样本((批次大小,3))
产出样本、目标
示例_形状=(1100、4096、2)
序列号=简单生成器(示例号[0],示例号[1],示例号[2],批次号=10)
val_gen=简单_生成器(示例_形状[0]、示例_形状[1]、示例_形状[2])
test_gen=简单_生成器(示例_形状[0]、示例_形状[1]、示例_形状[2])
输入张量=输入(形状=示例形状)
preprocess=layers.Conv2D(32,3,activation='relu')(输入张量)
preprocess=layers.Conv2D(32,3,activation='relu')(预处理)
预处理=层。MaxPool2D(池大小=(3,3),步幅=3)(预处理)
“总目1”
head_1=layers.Conv2D(32,3,activation='relu')(预处理)
head_1=layers.Conv2D(32,3,activation='relu')(head_1)
头1=层。MaxPool2D(池大小=(3,3),步幅=3)(头1)
head_1=layers.Conv2D(32,3,activation='relu')(head_1)
head_1=layers.Conv2D(32,3,activation='relu')(head_1)
头1=层。MaxPool2D(池大小=(3,3),步幅=3)(头1)
head_1=layers.Conv2D(16,3,activation='relu')(head_1)
head_1=layers.Conv2D(16,3,activation='relu')(head_1)
头1=层。MaxPool2D(池大小=(3,3),步幅=3)(头1)
head_1=层。致密(8,活化='relu')(head_1)
“总目2”
head_2=layers.Conv2D(32,3,activation='relu')(预处理)
head_2=layers.Conv2D(32,3,activation='relu')(head_2)
头2=层。MaxPool2D(池大小=(3,3),步幅=3)(头2)
head_2=layers.Conv2D(32,3,activation='relu')(head_2)
head_2=layers.Conv2D(32,3,activation='relu')(head_2)
头2=层。MaxPool2D(池大小=(3,3),步幅=3)(头2)
head_2=layers.Conv2D(16,3,activation='relu')(head_2)
head_2=layers.Conv2D(16,3,activation='relu')(head_2)
头2=层。MaxPool2D(池大小=(3,3),步幅=3)(头2)
head_2=层。致密(8,活化='relu')(head_2)
“总目3”
head_3=layers.Conv2D(32,3,activation='relu')(预处理)
head_3=layers.Conv2D(32,3,activation='relu')(head_3)
头3=层。MaxPool2D(池大小=(3,3),步幅=3)(头3)
head_3=layers.Conv2D(32,3,activation='relu')(head_3)
head_3=layers.Conv2D(32,3,activation='relu')(head_3)
头3=层。MaxPool2D(池大小=(3,3),步幅=3)(头3)
head_3=layers.Conv2D(16,3,activation='relu')(head_3)
head_3=layers.Conv2D(16,3,activation='relu')(head_3)
头3=层。MaxPool2D(池大小=(3,3),步幅=3)(头3)
head_3=层。致密(8,活化='relu')(head_3)
concat_out=层。连接(轴=-1)([head_1,head_2,head_3])
concat\u out=layers.flatte()(concat\u out)
输出张量=层。密集(3)(浓缩)
模型=模型(输入张量、输出张量)
compile(loss=loss.mean_绝对错误,optimizer='sgd')
model.summary()
历史=模型.fit(x=训练生成,每个历元的步骤=25,历元=12,验证数据=val生成,验证步骤=10,详细=True)
model.save(目录+'\\发散网络.h5')
评估=模型。评估生成器(生成器=测试生成,步骤=20,详细=真)
打印(评估)

有人能解释这次事故或提出任何可能的解决方案吗?我在Anaconda环境中运行这段代码,但是我尝试在基本的python虚拟环境中运行,以查看这是否是Anaconda问题,但我发现两者之间没有区别。

我的conda环境似乎存在问题。我创建了一个新的“最低限度”环境,其中只包含我需要的包,这就清除了所有内容。我用于此操作的信息可在以下位置找到:


嗨,我也面临同样的问题。根本原因到底是什么?在我的例子中,这是由于python环境的问题,我相信我对一些软件包使用了conda安装,然后对其他软件包使用了pip安装,这导致一些软件包安装不正确或对其他软件包不可见。我的解决方案是打开Anaconda提示符,创建一个新环境,并在创建时安装所有相关的软件包,允许conda处理版本控制和文件结构。从那时起,所有新安装都是使用conda完成的。你当然可以避开anaconda,自己安装一个新的python环境,然后使用pip安装所有相关的软件包,这不太可能是问题的根源,也不能通过CondaThe安装。我唯一能说的是,这是一些没有被标记的版本不匹配。每个软件包都是兼容版本吗?