Python CNN Keras的列表numpy数组到普通数组的转换

Python CNN Keras的列表numpy数组到普通数组的转换,python,numpy,keras,deep-learning,conv-neural-network,Python,Numpy,Keras,Deep Learning,Conv Neural Network,我有一些用文件夹隔开的图像。所以我导入了它们,并将它们转换为像素阵列。当我输入时: In [9]: X_train.shape out [9]: (7467,60,80,3) In [11]: X_train Out [11]: array([[[0., 0., 0.], [0., 0., 0.], [0., 0., 0.], ..., [0., 0., 0.], [0., 0., 0.], [0.

我有一些用文件夹隔开的图像。所以我导入了它们,并将它们转换为像素阵列。当我输入时:

In [9]: X_train.shape
out [9]: (7467,60,80,3)
In [11]: X_train
Out [11]: array([[[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        ...,
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        ...,
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        ...,
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       ...,
In [3]: train['images].values
Out [3]: array([list([[[0.7411764706, 0.7607843137, 0.8274509804], `[0.7215686275000001, 0.7058823529, 0.7882352941], [0.7019607843, 0.6823529412, 0.7843137255], [0.7176470588, 0.7215686275000001, 0.8196078431], [0.8, 0.8352941176, 0.8549019608], [0.8352941176, 0.8666666667, 0.8666666667], [0.8509803922, 0.8745098039, 0.8666666667], [0.8549019608, 0.8745098039, 0.8666666667], [0.8431372549, 0.8666666667, 0.8666666667], [0.8235294118, 0.8705882353000001, 0.8588235294000001], [0.831372549, 0.8705882353000001, 0.8627450980000001], [0.8352941176, 0.831372549, 0.8549019608], [0.7686274510000001, 0.7686274510000001, 0.8117647059], [0.7098039216, 0.7254901961, 0.7803921569000001], [0.7019607843, 0.7333333333000001, 0.8], [0.7254901961, 0.7686274510000001, 0.8392156863], [0.7647058824, 0.7803921569000001, 0.8509803922], [0.7372549020000001, 0.7411764706, 0.8117647059], [0.7098039216, 0.7019607843, 0.7960784314], [0.6980392157, 0.6705882353, 0.8039215686000001], [0.6901960784000001, 0.6823529412, 0.8117647059], [0.6901960784000001, 0.6901960784000001, 0.8196078431], [0.6941176471, 0.6980392157, 0.831372549], [0.6980392157, 0.7058823529, 0.8352941176], [0.7254901961, 0.7490196078, 0.8352941176], [0.8, 0.831372549, 0.8745098039], [0.8431372549, 0.8784313725, 0.8862745098], [0.8509803922, 0.8823529412000001, 0.8862745098], [0.831372549, 0.8352941176, 0.8745098039], [0.7725490196, 0.7411764706, 0.8392156863], [0.7529411765, 0.7294117647, 0.8392156863], [0.7607843137, 0.7764705882, 0.8352941176], [0.8078431373, 0.8392156863, 0.8705882353000001], [0.8274509804, 0.8549019608, 0.8862745098], [0.8117647059, 0.8431372549, 0.8705882353000001], [0.7725490196, 0.8, 0.8352941176], [0.7529411765, 0.7764705882, 0.8431372549], [0.8117647059, 0.8352941176, 0.8862745098], [0.8745098039, 0.8980392157, 0.9176470588000001], [0.8862745098, 0.9098039216, 0.9058823529000001], [0.8823529412000001, 0.9058823529000001, 0.9019607843], [0.8784313725, 0.9098039216, 0.9058823529000001], [0.8666666667, 0.9137254902, 0.9058823529000001], [0.8627450980000001, 0.9176470588000001, 0.9098039216], [0.86274509....`
In [4]: train['images'].shape
Out [4]: (7467,)
我想用类的数量附加这个,创建一个数据集,另存为
.json
文件,导入一个新的笔记本,并为我自己的项目进行图像处理。 所以我输入了以下代码:

In [10]: dataset = pd.DataFrame({'label': y_train, 'images': list(X_train)}, 
         columns=['label', 'images'])
但是,当我键入时:

In [9]: X_train.shape
out [9]: (7467,60,80,3)
In [11]: X_train
Out [11]: array([[[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        ...,
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        ...,
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        ...,
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       ...,
In [3]: train['images].values
Out [3]: array([list([[[0.7411764706, 0.7607843137, 0.8274509804], `[0.7215686275000001, 0.7058823529, 0.7882352941], [0.7019607843, 0.6823529412, 0.7843137255], [0.7176470588, 0.7215686275000001, 0.8196078431], [0.8, 0.8352941176, 0.8549019608], [0.8352941176, 0.8666666667, 0.8666666667], [0.8509803922, 0.8745098039, 0.8666666667], [0.8549019608, 0.8745098039, 0.8666666667], [0.8431372549, 0.8666666667, 0.8666666667], [0.8235294118, 0.8705882353000001, 0.8588235294000001], [0.831372549, 0.8705882353000001, 0.8627450980000001], [0.8352941176, 0.831372549, 0.8549019608], [0.7686274510000001, 0.7686274510000001, 0.8117647059], [0.7098039216, 0.7254901961, 0.7803921569000001], [0.7019607843, 0.7333333333000001, 0.8], [0.7254901961, 0.7686274510000001, 0.8392156863], [0.7647058824, 0.7803921569000001, 0.8509803922], [0.7372549020000001, 0.7411764706, 0.8117647059], [0.7098039216, 0.7019607843, 0.7960784314], [0.6980392157, 0.6705882353, 0.8039215686000001], [0.6901960784000001, 0.6823529412, 0.8117647059], [0.6901960784000001, 0.6901960784000001, 0.8196078431], [0.6941176471, 0.6980392157, 0.831372549], [0.6980392157, 0.7058823529, 0.8352941176], [0.7254901961, 0.7490196078, 0.8352941176], [0.8, 0.831372549, 0.8745098039], [0.8431372549, 0.8784313725, 0.8862745098], [0.8509803922, 0.8823529412000001, 0.8862745098], [0.831372549, 0.8352941176, 0.8745098039], [0.7725490196, 0.7411764706, 0.8392156863], [0.7529411765, 0.7294117647, 0.8392156863], [0.7607843137, 0.7764705882, 0.8352941176], [0.8078431373, 0.8392156863, 0.8705882353000001], [0.8274509804, 0.8549019608, 0.8862745098], [0.8117647059, 0.8431372549, 0.8705882353000001], [0.7725490196, 0.8, 0.8352941176], [0.7529411765, 0.7764705882, 0.8431372549], [0.8117647059, 0.8352941176, 0.8862745098], [0.8745098039, 0.8980392157, 0.9176470588000001], [0.8862745098, 0.9098039216, 0.9058823529000001], [0.8823529412000001, 0.9058823529000001, 0.9019607843], [0.8784313725, 0.9098039216, 0.9058823529000001], [0.8666666667, 0.9137254902, 0.9058823529000001], [0.8627450980000001, 0.9176470588000001, 0.9098039216], [0.86274509....`
In [4]: train['images'].shape
Out [4]: (7467,)
但当我导入json文件并显示:

In [2]: train=pd.read_json('train_file.json')
        train.head()
Out [2]:
 image_no   images
0    7468   [[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0039215...
1    7469   [[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0,...
10   7478   [[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0,...
100  7568   [[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0,...
1000 8468   [[[0.27058823530000004, 0.1843137255, 0.247058.

当我输入时:

In [9]: X_train.shape
out [9]: (7467,60,80,3)
In [11]: X_train
Out [11]: array([[[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        ...,
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        ...,
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        ...,
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       ...,
In [3]: train['images].values
Out [3]: array([list([[[0.7411764706, 0.7607843137, 0.8274509804], `[0.7215686275000001, 0.7058823529, 0.7882352941], [0.7019607843, 0.6823529412, 0.7843137255], [0.7176470588, 0.7215686275000001, 0.8196078431], [0.8, 0.8352941176, 0.8549019608], [0.8352941176, 0.8666666667, 0.8666666667], [0.8509803922, 0.8745098039, 0.8666666667], [0.8549019608, 0.8745098039, 0.8666666667], [0.8431372549, 0.8666666667, 0.8666666667], [0.8235294118, 0.8705882353000001, 0.8588235294000001], [0.831372549, 0.8705882353000001, 0.8627450980000001], [0.8352941176, 0.831372549, 0.8549019608], [0.7686274510000001, 0.7686274510000001, 0.8117647059], [0.7098039216, 0.7254901961, 0.7803921569000001], [0.7019607843, 0.7333333333000001, 0.8], [0.7254901961, 0.7686274510000001, 0.8392156863], [0.7647058824, 0.7803921569000001, 0.8509803922], [0.7372549020000001, 0.7411764706, 0.8117647059], [0.7098039216, 0.7019607843, 0.7960784314], [0.6980392157, 0.6705882353, 0.8039215686000001], [0.6901960784000001, 0.6823529412, 0.8117647059], [0.6901960784000001, 0.6901960784000001, 0.8196078431], [0.6941176471, 0.6980392157, 0.831372549], [0.6980392157, 0.7058823529, 0.8352941176], [0.7254901961, 0.7490196078, 0.8352941176], [0.8, 0.831372549, 0.8745098039], [0.8431372549, 0.8784313725, 0.8862745098], [0.8509803922, 0.8823529412000001, 0.8862745098], [0.831372549, 0.8352941176, 0.8745098039], [0.7725490196, 0.7411764706, 0.8392156863], [0.7529411765, 0.7294117647, 0.8392156863], [0.7607843137, 0.7764705882, 0.8352941176], [0.8078431373, 0.8392156863, 0.8705882353000001], [0.8274509804, 0.8549019608, 0.8862745098], [0.8117647059, 0.8431372549, 0.8705882353000001], [0.7725490196, 0.8, 0.8352941176], [0.7529411765, 0.7764705882, 0.8431372549], [0.8117647059, 0.8352941176, 0.8862745098], [0.8745098039, 0.8980392157, 0.9176470588000001], [0.8862745098, 0.9098039216, 0.9058823529000001], [0.8823529412000001, 0.9058823529000001, 0.9019607843], [0.8784313725, 0.9098039216, 0.9058823529000001], [0.8666666667, 0.9137254902, 0.9058823529000001], [0.8627450980000001, 0.9176470588000001, 0.9098039216], [0.86274509....`
In [4]: train['images'].shape
Out [4]: (7467,)
当我输入时:

In [9]: X_train.shape
out [9]: (7467,60,80,3)
In [11]: X_train
Out [11]: array([[[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        ...,
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        ...,
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        ...,
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       ...,
In [3]: train['images].values
Out [3]: array([list([[[0.7411764706, 0.7607843137, 0.8274509804], `[0.7215686275000001, 0.7058823529, 0.7882352941], [0.7019607843, 0.6823529412, 0.7843137255], [0.7176470588, 0.7215686275000001, 0.8196078431], [0.8, 0.8352941176, 0.8549019608], [0.8352941176, 0.8666666667, 0.8666666667], [0.8509803922, 0.8745098039, 0.8666666667], [0.8549019608, 0.8745098039, 0.8666666667], [0.8431372549, 0.8666666667, 0.8666666667], [0.8235294118, 0.8705882353000001, 0.8588235294000001], [0.831372549, 0.8705882353000001, 0.8627450980000001], [0.8352941176, 0.831372549, 0.8549019608], [0.7686274510000001, 0.7686274510000001, 0.8117647059], [0.7098039216, 0.7254901961, 0.7803921569000001], [0.7019607843, 0.7333333333000001, 0.8], [0.7254901961, 0.7686274510000001, 0.8392156863], [0.7647058824, 0.7803921569000001, 0.8509803922], [0.7372549020000001, 0.7411764706, 0.8117647059], [0.7098039216, 0.7019607843, 0.7960784314], [0.6980392157, 0.6705882353, 0.8039215686000001], [0.6901960784000001, 0.6823529412, 0.8117647059], [0.6901960784000001, 0.6901960784000001, 0.8196078431], [0.6941176471, 0.6980392157, 0.831372549], [0.6980392157, 0.7058823529, 0.8352941176], [0.7254901961, 0.7490196078, 0.8352941176], [0.8, 0.831372549, 0.8745098039], [0.8431372549, 0.8784313725, 0.8862745098], [0.8509803922, 0.8823529412000001, 0.8862745098], [0.831372549, 0.8352941176, 0.8745098039], [0.7725490196, 0.7411764706, 0.8392156863], [0.7529411765, 0.7294117647, 0.8392156863], [0.7607843137, 0.7764705882, 0.8352941176], [0.8078431373, 0.8392156863, 0.8705882353000001], [0.8274509804, 0.8549019608, 0.8862745098], [0.8117647059, 0.8431372549, 0.8705882353000001], [0.7725490196, 0.8, 0.8352941176], [0.7529411765, 0.7764705882, 0.8431372549], [0.8117647059, 0.8352941176, 0.8862745098], [0.8745098039, 0.8980392157, 0.9176470588000001], [0.8862745098, 0.9098039216, 0.9058823529000001], [0.8823529412000001, 0.9058823529000001, 0.9019607843], [0.8784313725, 0.9098039216, 0.9058823529000001], [0.8666666667, 0.9137254902, 0.9058823529000001], [0.8627450980000001, 0.9176470588000001, 0.9098039216], [0.86274509....`
In [4]: train['images'].shape
Out [4]: (7467,)
但是我可以使用
plt.imshow()
绘制这些图像。但是当我尝试直接做
model.fit(train['images],y\u train)
我得到这个错误:

ValueError:使用序列设置数组元素


那么我错在哪里呢?将其转储到
.json
文件时,或者导入
json
文件后如何将其转换为数组并修复错误。

将数据帧存储为
.json
时,您的
np数组将转换为列表。要将它们提供给Keras模型,您需要将它们放在一个
阵列中
(图像、高度、宽度、通道)


X\u train.shape
仍然保留
(7467,)
并且在检查输入时给出错误
错误:预期conv2d\u 1\u输入有4个维度,但得到了具有shape(7467,1)的数组。
您是对的。试试:
X\u train=np.array(train['images'].tolist())
。我将编辑我的答案。嗨,我做了
model.predict(X_测试)
,我得到了一个概率数组的输出。您知道如何将它们转换为类编号,然后将它们映射为字符串值吗?要转换为二进制标签:
(model.predict(X_测试)>0.5)。astype(int)
。要转换为字符串标签,可以使用python字典将二进制标签映射到字符串名称。是的,我已经能够解决这个问题,但新的问题是,我的模型始终只预测一个输出类。你知道我怎样才能解决这个问题吗?