我在学习Udacity的深度学习课程时,遇到了一行代码我不明白它的作用和原因。能有人帮我理解一下吗?如果有人能分享相关的文档就更好了。
dataset = dataset[0:num_images, :, :]
来源:链接>load_letter 方法 – https://github.com/rndbrtrnd/udacity-deep-learning/blob/master/1_notmnist.ipynb
Load_letter 函数:
def load_letter(folder, min_num_images): image_files = os.listdir(folder) dataset = np.ndarray(shape=(len(image_files), image_size, image_size), dtype=np.float32) image_index = 0 print(folder) for image in os.listdir(folder): image_file = os.path.join(folder, image) try: image_data = (ndimage.imread(image_file).astype(float) - pixel_depth / 2) / pixel_depth if image_data.shape != (image_size, image_size): raise Exception('Unexpected image shape: %s' % str(image_data.shape)) dataset[image_index, :, :] = image_data image_index += 1 except IOError as e: print('Could not read:', image_file, ':', e, '- it\'s ok, skipping.') num_images = image_index dataset = dataset[0:num_images, :, :] if num_images < min_num_images: raise Exception('Many fewer images than expected: %d < %d' % (num_images, min_num_images)) print('Full dataset tensor:', dataset.shape) print('Mean:', np.mean(dataset)) print('Standard deviation:', np.std(dataset)) return dataset
回答:
您的数据集中是一个张量(或多维数组)。在您的例子中,它有三个维度。
dataset[0:num_images, :, :]
在第一维度上,您选择了从0到图像数量的一组图像,而冒号’:’表示保留其余信息。
所以这只是在第一维度上进行张量过滤,而保持其余维度不变。