python - 如何将一组图像转换为 numpy 数组?
问题描述
我正在构建我的第一个神经网络,以“使用 Python 进行深度学习 - Francois Chollet”一书为例,我立即找到了我的第一个问题。当作者导入 MNIST 数据集时,他还打印了形状,得到它是一维张量。我正在尝试导入一个包含所有球童图像的文件夹,以检查 NN 是否正确对它们进行编目。问题是我无法从所有这些图像中获得一维张量。我尝试将它们中的每一个都转换为numpy.asarray(my_image)
. 我也尝试转换整个列表,但结果它变成了一个元组......有什么提示吗?
train_label = 'Caddies'
train_images = list()
for filename in listdir('/content/drive/MyDrive/Data set/Caddies/'):
img_data = image.imread('/content/drive/MyDrive/Data set/Caddies/' +\
filename)
img_data = np.asarray(img_data)
#print(str(img_data.dtype) + str(img_data.shape))
train_images.append(img_data)
print('> loaded %s images' % (len(train_images)))
train_images = np.array(train_images)
print(train_images.shape())
解决方案
如果您想将图像输入神经网络,我建议您不要使用 for 循环将所有图像加载到内存中。相反,您可以使用此功能:
import tensorflow as tf
import os
os.chdir('pictures')
files = tf.data.Dataset.list_files('*jpg')
def load_images(path):
image = tf.io.read_file(path)
image = tf.io.decode_jpeg(image)
image = tf.image.convert_image_dtype(image, tf.float32) # optional
image = tf.image.resize(image, (224, 224)) # optional
return image
ds = files.map(load_images).batch(1)
next(iter(ds)).shape
(1, 224, 224, 3)
推荐阅读
- c# - 在 Web API 中模拟 FileStream 构造函数
- azure - 运行多容器应用程序时,适用于容器的 Azure Web 应用程序是否支持 ssh 访问?
- python - Azure Functions (Python) blob 输出绑定。当名称只是输入消息的一部分时如何设置名称
- google-analytics - 使用相同的目标网址跟踪目标
- asp.net - 在亚马逊 EC2 中延迟加载内容 Web 应用程序
- c - 在C中将字符串拆分为两个变量
- spring-boot - 使用 Maven 将 springboot 可执行文件部署到 Nexus
- python - 从 np.float64 到 np.uint8 的快速转换(带有缩放和裁剪)
- azure - Azure Maps API 不返回现有地理实体的结果
- oraclereports - 使用 .XLS 模板的 Oracle EBS XML 发布者报告