内核因奇怪的行为而死
Posted
技术标签:
【中文标题】内核因奇怪的行为而死【英文标题】:Kernel dies with strange behavior 【发布时间】:2021-03-16 12:19:46 【问题描述】:我有一个显示奇怪行为的简单函数。我已经搜索了解释,但找不到任何解释。
def myfunc(frame):
lol = []
for i in range(frame.shape[0]):
if frame.iloc[i,3] == 3:
lol.append(frame.iloc[i,7])
return np.asarray(lol,dtype=np.int32)
print('before')
x = myfunc(x)
print('after')
以上代码的结果是
之前 内核死了
def myfunc(frame):
lol = []
for i in range(frame.shape[0]):
if frame.iloc[i,3] == 3:
lol.append(frame.iloc[i,7])
print('myfunc')
return np.asarray(lol,dtype=np.int32)
print('before')
x = myfunc(x)
print('after')
然而,只需添加一个打印语句即可
之前 我的函数 之后 内核死了
打印语句是唯一的区别,我已经对此进行了测试,也许有 50 次。忽略我的其他问题(内核死了),我不知道为什么会这样。如果有任何见解,我将不胜感激。
【问题讨论】:
什么是 x? .... 对不起,我以为很清楚。 x 是一个熊猫数据框。 【参考方案1】:我尝试使用示例数据重现错误,它对我来说效果很好。 您可以在 colab 环境中对您的数据进行相同的尝试并检查,如果没有出现错误,则问题可能是以下问题之一。
-
您的数据很大,无法放入内存,您可以尝试在加载 csv 文件时指定
engine='python'
df = pd.read_csv('input.csv', engine='python')
。
您也可以将数据框拆分为多个数据框,然后再合并。
您可以使用 Tensorflow 的 tf.data 加载 CSV 文件并构建对大文件更有效的输入管道。
下面是带有示例数据的工作代码。
import tensorflow as tf
import pandas as pd
import numpy as np
df = pd.read_csv("/content/sample_data/mnist_train_small.csv")
def myfunc(frame):
lol = []
for i in range(frame.shape[0]):
if frame.iloc[i,3] == 3:
lol.append(frame.iloc[i,7])
return np.asarray(lol,dtype=np.int32)
print('before')
x = myfunc(df)
print('after')
结果:
before
after
【讨论】:
您的回答没有直接解决问题。我不是在询问内核死亡的可能原因。我在问奇怪的行为。我已经知道尝试加载大文件不是问题,因为我之前可以毫无问题地加载它。另外,我完全卸载了Anaconda,然后重新安装了Anaconda,内核死机问题就消失了。您可能对奇怪的行为有任何见解(这是我的帖子的目的)? 如果重新安装 Anaconda 对您有用,那么这可能是旧版本的 Tensorflow 和其他依赖库的原因。以上是关于内核因奇怪的行为而死的主要内容,如果未能解决你的问题,请参考以下文章