Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将14个数组的列表转换为单个数组(Keras值错误)_Python_Numpy_Keras - Fatal编程技术网

Python 将14个数组的列表转换为单个数组(Keras值错误)

Python 将14个数组的列表转换为单个数组(Keras值错误),python,numpy,keras,Python,Numpy,Keras,当我尝试训练我的模型时,我得到以下Keras值错误 ValueError:检查模型目标时出错:Numpy数组列表 传递给模型的大小不是模型预期的大小。 期望看到1个数组,但得到了以下14个数组的列表 阵列: 当我尝试使用以下方法重塑y_col形状时: y_col = np.stack( y_col, axis=0 ) 我得到: TypeError: If class_mode="multi_output", y_col must be a list. Received ndarray. 如果

当我尝试训练我的模型时,我得到以下Keras值错误

ValueError:检查模型目标时出错:Numpy数组列表 传递给模型的大小不是模型预期的大小。 期望看到1个数组,但得到了以下14个数组的列表 阵列:

当我尝试使用以下方法重塑y_col形状时:

y_col = np.stack( y_col, axis=0 )
我得到:

TypeError: If class_mode="multi_output", y_col must be a list. Received ndarray.
如果我只是想和你一起做

y_col = np.array(y_col)
我也有同样的错误

数据帧:

      Path    black  grey  green blue   etc....
0  12345.jpg    1      0       1  0
1  12345.jpg    0      0       1  0
2  12345.jpg    1      0       0  1
3  12345.jpg    0      1       0  1
4  12345.jpg    0      0       1  1
5  12345.jpg    0      0       1  1
每个图像的模型应该是一个由14个元素组成的单个数组[0,0,1,1,0,1,0,…],但看起来每个图像要传递14个不同的数组

问题发生在CNN网络中,该网络识别产品(衣服)的颜色 一种产品可以有多种颜色,例如[0.0,0,1,0,1,0,0,1]

最初,y_col看起来:

['beige',
 'black',
 'blue',
 'brown',
 'gray',
 'green',
 'multicolor',
 'orange',
 'pink',
 'red',
 'violet',
 'white',
 'yellow',
 'transparent']
发电机:

def get_generator(filename, number=None):
    # 
    df = pd.read_csv(filename, delimiter=' ', names=color_list, dtype="str")
    if number:
        df = df[:number]
    # 
    gen = image.ImageDataGenerator()
    # 
    directory = os.path.dirname(filename)
    # 
    return gen.flow_from_dataframe(df, directory, "path", y_col = y_col , target_size=(224, 224), batch_size=32,class_mode="multi_output")

y\u col
是一个包含
numpy
数组的列表。

y_col = [np.array([['0'], 
                   ['0'], 
                   ['0'], 
                   ['0'], 
                   ['0'], 
                   ['0'], 
                   ['0'], 
                   ['0'], 
                   ['1']])]
使用:

 y_new  = y_col[0].flatten()
 y_new = [int(y) for y in y_new]   
y_new                                                                                      
#[0, 0, 0, 0, 0, 0, 0, 0, 1]
在一行中:

 y_new  = y_col[0].flatten()
 y_new = [int(y) for y in y_new]   
y_new                                                                                      
#[0, 0, 0, 0, 0, 0, 0, 0, 1]
输出:

 y_new  = y_col[0].flatten()
 y_new = [int(y) for y in y_new]   
y_new                                                                                      
#[0, 0, 0, 0, 0, 0, 0, 0, 1]

y\u col
是一个包含
numpy
数组的列表。

y_col = [np.array([['0'], 
                   ['0'], 
                   ['0'], 
                   ['0'], 
                   ['0'], 
                   ['0'], 
                   ['0'], 
                   ['0'], 
                   ['1']])]
使用:

 y_new  = y_col[0].flatten()
 y_new = [int(y) for y in y_new]   
y_new                                                                                      
#[0, 0, 0, 0, 0, 0, 0, 0, 1]
在一行中:

 y_new  = y_col[0].flatten()
 y_new = [int(y) for y in y_new]   
y_new                                                                                      
#[0, 0, 0, 0, 0, 0, 0, 0, 1]
输出:

 y_new  = y_col[0].flatten()
 y_new = [int(y) for y in y_new]   
y_new                                                                                      
#[0, 0, 0, 0, 0, 0, 0, 0, 1]

上传原始列表您是否尝试过
y\u col=[y代表y\u col]
?上传原始列表您是否尝试过
y\u col=[y代表y\u col]
?y\u col最初是一个颜色列表,然后才是在生成器中分配的数字。在这种情况下,我不能直接在y列上进行“展平”。我纠正了这个问题,y列最初是一个颜色列表,只有到那时才是生成器中指定的数字。在这种情况下,我不能直接在y列上进行“展平”。我更正了这个问题