python - 为什么每次我在这个特定数据集上运行 train-test split 时我的内核都会死掉?

标签 python tensorflow keras scikit-learn conv-neural-network

我之前使用过 train-test split 并且没有遇到任何问题。我的 CNN 有一个相当大的 (1GB) 数据集并尝试使用它,但我的内核每次都死掉了。我读到有时输入 shuffle=False 会有所帮助。我没有运气就试过了。我在下面包含了我的代码。任何帮助将不胜感激!!

import pandas as pd
import os
import cv2
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow import keras
from PIL import Image
from sklearn.model_selection import train_test_split
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.optimizers import Adam
from sklearn.metrics import accuracy_score
np.random.seed(42)
data_dir='birds/'
train_path=data_dir+'/train'
test_path=data_dir+'/test'
img_size=(100,100)
channels=3
num_categories=len(os.listdir(train_path))
#get list of each category to zip
names_of_species=[]

for i in os.listdir(train_path):
    names_of_species.append(i)

#make list of numbers from 1-300:
num_list=[]
for i in range(300):
    num_list.append(i)
nums_and_names=dict(zip(num_list, names_of_species))
folders=os.listdir(train_path)
import random
from matplotlib.image import imread
df=pd.read_csv(data_dir+'/Bird_Species.csv')

img_data=[]
img_labels=[]

for i in nums_and_names:
    path=data_dir+'train/'+str(names_of_species[i])
    images=os.listdir(path)
    
    for img in images:
        try:
            image=cv2.imread(path+'/'+img)
            image_fromarray=Image.fromarray(image, 'RGB')
            resize_image=image_fromarray.resize((img_size))
            img_data.append(np.array(resize_image))
            img_labels.append(num_list[i])
        except:
            print("Error in "+img)
img_data=np.array(img_data)
img_labels=np.array(img_labels)
img_labels
array([210,  41, 148, ...,  15, 115, 292])
#SHUFFLE TRAINING DATA

shuffle_indices=np.arange(img_data.shape[0])
np.random.shuffle(shuffle_indices)
img_data=img_data[shuffle_indices]
img_labels=img_labels[shuffle_indices]
#Split the data

X_train, X_test, y_train, y_test=train_test_split(img_data,img_labels, test_size=0.2,random_state=42, shuffle=False)

#Resize data
X_train=X_train/255
X_val=X_val/255

最佳答案

这意味着您可能用完了 RAM 或 GPU 内存。

要检查 Windows 打开任务管理器 (ctrl+shft+esc),转到性能运行代码,并检查 RAM 使用情况和 GPU 内存使用情况以确定是否是其中任何一个原因。

注意:要监控 GPU 内存,您应该监控“专用 GPU 内存”,当您单击 GPU 时,可以在左下角找到它。

关于python - 为什么每次我在这个特定数据集上运行 train-test split 时我的内核都会死掉?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69395815/

相关文章:

python - 使用python代码从csv文件中提取

python - 每当 'chromedriver' 不是事件窗口时,Selenium 就会搞砸

python - 如何使用 tensorflow 制作经过训练的模型的副本?

tensorflow - TensorFlow Gradient Tape 的用途是什么?

python - Keras 看不到训练和验证文件夹中的所有图像

python - OpenCV python 重叠粒子大小和数量

TENSORFLOW 语音命令 : Error(Data too short when trying to read string) when decode the wav

python - 在 Ipython Notebook 中将 keras 后端更改为 Theano

python - tf.keras model.predict 导致内存泄漏

python - 在 PYTHONPATH 中同时包含一个包及其子包会发生什么情况?