在图像数据生成器上训练时tensorflow GPU Sigdev错误

时间:2019-03-21 14:49:46

标签: python tensorflow machine-learning deep-learning gpu

我正在使用带有conda,python 3.6和tf gpu 1.12的ubuntu,并使用图像数据生成器加载图像,然后安装生成器。

我正在使用此代码

i = gen.flow_from_dataframe(dataframe=df, x_col="new_filename",
                            y_col="label", class_mode="sparse",
                            directory=links_dir, target_size=(224, 224), batch_size=32)

model.fit_generator(i, epochs=1, workers=1,
                    use_multiprocessing=False, max_queue_size=1,
                    verbose=1)

并得到此错误,甚至没有任何批次运行

  

以退出代码139(被信号11中断)完成的过程:   SIGSEGV)

我确认生成器正在使用

加载图像

我使用了nvidia smi,并确保在GPU上创建了模型并使用了gpu内存。

该模型是一个简单的小型转换网络,此GPU无法处理。

print(gen [0])并获取数据,一切正常。 因此,我认为图像数据很好。

这里可能是什么问题?发生这种情况是因为我的机器中有两个GPU,而我只使用一个吗?

更新:还使用model.fit尝试使用以下方法从生成器提取的实际数据:

data, y = i[0][0], i[0][1] 
model.fit(data, y) 

检查数据时,它是一个numpy数组和标签,与应有的一样。

并出现相同的sigdev错误,这意味着问题不在于数据流。

更新: 使用以下创建代码,可以在完全连接的网络上工作:

model = Sequential()
model.add(Flatten(input_shape=(20, 20, 3)))
model.add(Dense(32, activation="relu"))
model.add(Dense(200, activation="sigmoid"))

找不到这么小的Conv网络不能在11 gb GPU上运行的任何理由...的想法吗?

经过大量测试,毫无疑问,我发现GPU内存已足够,并且没有被其他任何应用程序使用,而且当Conv层崩溃时,没有理由让FC层正常工作!我列出了我的GPU(我有一个1070和一个2080ti) 我专门用this sample在一个GPU上运行代码,瞧瞧,当1070运行正常时,2080ti会崩溃。这可能是驱动程序问题吗?

0 个答案:

没有答案