将列表转换为n维数组以供TFlearn使用

我正在开发一个基于TensorFlow的TFlearn来对图像进行分类,现在我使用scipy.misc.imread创建数据集,并将图像大小设置为150×150,通道数为3,目前我得到一个包含4063个(我的图像数量)(150, 150, 3)数组的列表,现在我想将其转换为n维数组(4063, 150, 150, 3),我不知道该如何解决这个问题,请帮助我。提前感谢!

import numpy as npimport osimport tensorflow as tffrom scipy import miscfrom PIL import ImageIMAGE_SIZE = 150image_path = "dragonfly"labels = np.zeros((4063, 1))labels [0:2363] = 1labels [2364:4062] = 0test_labels = np.zeros((200, 1))test_labels [0:99] = 1test_labels [100:199] = 0fset = []fns=[os.path.join(root,fn) for root,dirs,files in os.walk(image_path) for fn in files]for f in fns:    fset.append(f)def create_train_data():    train_data = []    fns=[os.path.join(root,fn) for root,dirs,files in os.walk(image_path) for fn in files]    for f in fns:        image = misc.imread(f)        image = misc.imresize(image, (IMAGE_SIZE, IMAGE_SIZE, 3))        train_data.append(np.array(image))    return train_datatrain_data = create_train_data()print (len(train_data))training_data = train_data[0:2264] + train_data[2364:3963]train_labels = np.concatenate((labels[0:2264], labels[2364:3963]))test_data = train_data[2264:2364] + train_data[3963:4063]

train_data是我得到的列表,我希望将其转换


回答:

如果你有一组形状为(150, 150, 3)的图像(numpy数组),那么你可以通过构造函数或调用np.asarray函数(它会隐式调用构造函数)将外部列表转换为numpy数组:

np.array([np.ones((150,150,3)), np.ones((150,150,3))]).shape>>> (2, 150, 150, 3)

编辑:在你的情况下,可以在create_train_data函数的返回值中添加以下内容:

return np.array(train_data)

或者,如果你想将多个numpy数组添加到一个新的numpy数组中,你可以使用numpy.stack在新维度上添加它们。

import numpy as npimg_1 = np.ones((150, 150, 3))img_2 = np.ones((150, 150, 3))stacked_img = np.stack((img_1, img_2))stacked_img.shape>>> (2, 150, 150, 3)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注