在TensorFlow

时间:2018-01-19 17:22:46

标签: python tensorflow

我正在使用TensorFlow制作神经网络。我现在想将自己的图像导入为数据集,以便在这些图像上训练神经网络。

为此,我首先得到一个文件名列表及其相应的标签。我使用以下代码执行此操作:

locations = {"chimpanzee":["G:\Profielwerkstuk\chimpanzee"],
           "gorilla":["G:\Profielwerkstuk\gorilla"],
           "howler monkey":["G:\Profielwerkstuk\howler_monkey"]}

files = []
labels = []
numberlabel = []

for label, folders in locations.items():
    numberlabel.append(label)
    filesperlabel = []
    for folder in folders:
        filesperlabel.extend([join(folder, f) for f in listdir(folder) if isfile(join(folder, f))])
    print(len(filesperlabel))
    files.extend(filesperlabel)
    labels.extend([len(numberlabel) - 1] * len(filesperlabel))

locations这里是一个字典,标签为键,文件夹为值。

这很好用:我得到一个文件位置列表,一个标签列表和一个列表,用于转换猴子类型的输出神经元数。

然后我尝试从这个TensorFlow数据集。我首先在TensorFlow常量中转换文件名和标签名列表:

filenames = tf.constant(files)
labelnames = tf.constant(labels)

我首先尝试了Tensorflow website上的代码。但是,我在解码图像后得到图像不包含任何形状的错误。如何正确导入图像?

此外,在制作数据集之后,我想分批循环遍历它。 MNIST数据集包含一个非常方便的功能,但是它也可以用于自定义数据集吗?搜索这些问题并没有给我很多有用的提示。

1 个答案:

答案 0 :(得分:0)

对于导入:使用OpenCV导入图像

import opencv as cv
imgDataset = []
for i in range(len(files)):
    imgDataset.append(cv2.imread(files[i]))
imgDataset = np.asarray(imgDataset)

你会得到一个numpy形状的数组(num_files,height,width,color_channels)

访问第i个图像应该是imgDataset [i]。

这里的问题可能是,如果您的数据集太大,您将在以后遇到问题将其提供给占位符。批量处理整个数据集可能很困难。

如果您遇到尺寸问题,请查看以下链接: https://stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly.html

这是批量处理数据集的一步。