imgs = loader_train.__iter__().next()[0].view(batch_size, 784).numpy(),怎么修改
时间: 2024-04-15 21:27:38 浏览: 153
要修改这行代码,你可以使用以下方式:
```python
imgs = next(iter(loader_train))[0].view(batch_size, 784).numpy()
```
这里使用`next(iter(loader_train))`来替代`loader_train.__iter__().next()`。这两种方法是等效的,都是获取`loader_train`中的下一个batch数据。然后使用`.view(batch_size, 784)`来改变数据的形状,并最后使用`.numpy()`将数据转换为NumPy数组。
相关问题
i_test = 0 print('-'*30) print('Creating test images...') print('-'*30) imgs_test = glob.glob(self.test_path+"/*."+"bmp") print(len(imgs_test)) imgdatas_test = np.ndarray((len(imgs_test),self.img_rows,self.img_cols,1), dtype=np.uint8) for imgname_test in imgs_test: midname_test = imgname_test[imgname_test.rindex("/")+1:] img_test = load_img(self.test_path + "/" + midname_test,grayscale = True) #img_test = scipy.io.loadmat(self.test_path + "/" + midname_test) #img_test = img_test['src'] #img_test=img_test.resize(hw) img_test = img_to_array(img_test) imgdatas_test[i_test] = img_test i_test += 1 print('loading test images done') imgs_test = imgdatas_test.astype('float32') imgs_test /= 255 return imgs_train, imgs_mask_train, imgs_test
这段代码是用于读取测试数据集中的图像数据,并将其转换为一个numpy数组。具体来说,它首先通过glob函数获取测试数据集中所有.bmp文件的路径,然后利用load_img函数将每个图像转换为numpy数组,并存储到imgdatas_test数组中。最后,它将imgdatas_test数组中的元素转换为float32类型,并将它们归一化到[0,1]的范围内。函数返回imgs_train, imgs_mask_train, imgs_test三个numpy数组。
讲解代码实现的功能 def initFaces(self): # 存储知道人名列表 known_names = [] # 存储知道的特征值 known_encodings = [] # 遍历存储人脸图片的文件夹 db_folder = "images/db_faces" face_imgs = os.listdir(db_folder) # 遍历图片,将人脸图片转化为向量 for face_img in face_imgs: face_img_path = os.path.join(db_folder, face_img) face_name = face_img.split(".")[0] load_image = face_recognition.load_image_file(face_img_path) # 加载图片 image_face_encoding = face_recognition.face_encodings(load_image)[0] # 获得128维特征值 known_names.append(face_name) # 添加到人名的列表 known_encodings.append(image_face_encoding) # 添加到向量的列表 return known_names, known_encodings
这段代码实现了一个初始化人脸向量的函数,其主要功能为:
1. 创建两个空列表 known_names 和 known_encodings,分别用于存储已知人脸的名称和特征向量;
2. 遍历存储人脸图片的文件夹 db_folder,获取其中的所有人脸图片文件名;
3. 对于每个人脸图片文件 face_img,将其路径拼接到 db_folder 上,然后使用 face_recognition 库中的 load_image_file() 函数加载图片,并使用 face_encodings() 函数获取该图片的128维特征向量;
4. 将该图片的人名 face_name 添加到 known_names 列表中,将特征向量 image_face_encoding 添加到 known_encodings 列表中;
5. 最终返回 known_names 和 known_encodings 两个列表。
这个函数实现的目的是将已知人脸的特征向量存储下来,用于后续的人脸识别任务。具体地说,当系统需要识别一个人脸时,它会计算该人脸的特征向量,然后与已知人脸的特征向量进行比对,以确定该人脸的身份。
阅读全文