我正在训练张量流图像识别。我喂它两个独立的文件夹充满图像,但它不会工作,我认为这是一个数组错误。我以前用一个文件夹运行过它,里面装满了图像,当我切换到两个文件夹并设计了一个架构,开始出现错误时,它运行得很好。我有一种感觉,可能是因为他们把我的标签翻了一倍,但我不确定。寻找所有的建议,但请记住,我对神经网络/深度学习和python都非常陌生,但非常感谢您的帮助
import cv2
import numpy as np
import os
from random import shuffle
from tqdm import tqdm
CCW_DIR = 'C:\\Users\\cward\\Desktop\\images\\gz2\\ccw'
CW_DIR = 'C:\\Users\\cward\\Desktop\\images\\gz2\\cw'
IMG_SIZE = 50
LR = 1e-3
MODEL_NAME = 'dogsvscats-{}-{}.model'.format(LR, '2conv-basic')
def label_img(imgCW):
#word_label = img.split('.')[-3]
return[1,0]
#word_label == 'cw': return[0,1]
def label_img(imgCCW):
return[0,1]
def create_train_data():
training_data = []
for imgCCW in tqdm(os.listdir(CCW_DIR)):
labelCCW = label_img(imgCCW)
path = os.path.join(CCW_DIR, imgCCW)
img = cv2.resize(cv2.imread(path, cv2.IMREAD_GRAYSCALE), (IMG_SIZE,IMG_SIZE))
training_data.append([np.array(imgCCW), np.array(labelCCW)])
for imgCW in tqdm(os.listdir(CW_DIR)):
labelCW = label_img(imgCW)
path = os.path.join(CW_DIR, imgCW)
img = cv2.resize(cv2.imread(path, cv2.IMREAD_GRAYSCALE), (IMG_SIZE,IMG_SIZE))
training_data.append([np.array(imgCW), np.array(labelCW)])
shuffle(training_data)
np.save('train_data.npy', training_data)
return training_data
train_data = create_train_data()
这是程序运行两个图像文件夹后出现的错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-44-40719067ea74> in <module>()
----> 1 train_data = create_train_data()
<ipython-input-42-fa8590694b2d> in create_train_data()
12 training_data.append([np.array(imgCW), np.array(labelCW)])
13 shuffle(training_data)
---> 14 np.save('train_data.npy', training_data)
15 return training_data
~\AppData\Local\Continuum\anaconda3\lib\site-packages\numpy\lib\npyio.py in save(file, arr, allow_pickle, fix_imports)
507
508 try:
--> 509 arr = np.asanyarray(arr)
510 format.write_array(fid, arr, allow_pickle=allow_pickle,
511 pickle_kwargs=pickle_kwargs)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\numpy\core\numeric.py in asanyarray(a, dtype, order)
542
543 """
--> 544 return array(a, dtype, copy=False, order=order, subok=True)
545
546
ValueError: setting an array element with a sequence
抱歉,python不好,我对这门语言很陌生。提前谢谢你的帮助
问题中出现错误是因为} 只能保存numpy数组。我建议您在保存之前用^{} 堆栈那些数组,但更进一步的问题是,即使
training_data
是numpy数组的列表,^{training_data
的元素也是列表通常的方法是使用一个numpy数组来保存训练数据,另一个用于标签(注意,numpy也可以与^{} 混洗,但要注意保持图像和标签同步。)然后分别保存它们,或者与^{} 一起保存
一个简单的解决方法是使用Python的Pickle来保存(稍后加载)数据,它可以处理所有类型的对象,不仅仅是数组,但是速度要慢得多,根据数据的大小,这可能是一个因素,也可能不是一个因素
一个单独的注释:两次定义
label_img
函数将导致第二个函数运行。很像将导致
a
的值为256相关问题 更多 >
编程相关推荐