Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.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 Keras:“;检查目标时出错";_Python_Keras - Fatal编程技术网

Python Keras:“;检查目标时出错";

Python Keras:“;检查目标时出错";,python,keras,Python,Keras,当我试图用密集层构建Keras序列网络来进行多类分类时,我得到了“检查目标时出错”错误,请参见下文。我可以对输出变量使用一个热编码吗?所以我使用这个网络: from keras.models import Sequential from keras.layers import Dense, Dropout from keras.optimizers import RMSprop mean_len = 30 VEC_SIZE = 300 num_categories = 7 def basel

当我试图用密集层构建Keras序列网络来进行多类分类时,我得到了“检查目标时出错”错误,请参见下文。我可以对输出变量使用一个热编码吗?所以我使用这个网络:

from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.optimizers import RMSprop

mean_len = 30
VEC_SIZE = 300
num_categories = 7

def baseline_model():
    model = Sequential()
    model.add(Dense(mean_len, activation='relu',input_shape=(mean_len, VEC_SIZE,)))
    model.add(Dropout(0.2))
    model.add(Dense(mean_len, activation='relu'))
    model.add(Dropout(0.2))
    model.add(Dense(num_categories, activation='softmax'))
    model.summary()
    model.compile(loss='categorical_crossentropy',
              optimizer=RMSprop(),
              metrics=['accuracy'])

    return model
培训it:

estimator = KerasClassifier(build_fn=baseline_model, 
                            epochs=200, batch_size=100, 
                            verbose=0,  class_weight='balanced')

seed = 7
np.random.seed(seed)
kfold = KFold(n_splits=10, shuffle=True, random_state=seed)
results = cross_val_score(estimator,X_train, Y_train , cv=kfold)
print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))
对于输入向量:

X_train.shape
(6054, 30, 300)
向量是这样的:

X_train[0]
array([[ 0.01066018,  0.02115048, -0.0137242 , ..., -0.04065679,
         0.0046372 , -0.01615561],
       [-1.01996469, -0.5443387 ,  2.59211802, ...,  0.85539412,
        -0.34741816, -0.25221351],
       [ 0.4434503 ,  0.32438764, -0.26006699, ...,  0.27807152,
        -0.2352812 , -0.6669544 ],
       ..., 
       [ 0.03539507,  0.00473431,  0.03123392, ..., -0.0063079 ,
         0.03797895,  0.02079199],
       [-0.03658897,  0.02584517, -0.01945854, ...,  0.0241626 ,
        -0.03659866, -0.00615268],
       [ 0.0182472 , -0.02080663, -0.02958447, ..., -0.04258969,
        -0.04952002,  0.01375731]], dtype=float32)
和输出向量:

Y_train.shape
(6054, 7)

Y_train[0]
array([ 0.,  0.,  0.,  0.,  1.,  0.,  0.], dtype=float32)
错误输出:


层(类型)输出形状参数
=================================================================
密集型_23(密集型)(无,30,30)9030
_________________________________________________________________
辍学18(辍学)(无、30、30)0
_________________________________________________________________
密集型_24(密集型)(无、30、30)930
_________________________________________________________________
辍学19(辍学)(无、30、30)0
_________________________________________________________________
密集型_25(密集型)(无、30、7)217
=================================================================
总参数:10177
可培训参数:10177
不可训练参数:0
_________________________________________________________________
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1结果=交叉分值(估计器、X列、Y列、cv=kfold)
2打印(“基线:%.2f%%%(.2f%%”)”%(results.mean()*100,results.std()*100))
...
...
...
D:\usr\anaconda\lib\site packages\keras\engine\training.py输入数据(数据、名称、形状、检查批处理轴、异常前缀)
126'有'+str(len(形状[i]))+
127'维度,但得到了具有形状的数组'+
-->128 str(数组形状))
129对于枚举中的j,(dim,ref_dim)(zip(array.shape,shapes[i]):
130如果不是j且不检查批次轴:
ValueError:检查目标时出错:预期密集_25具有3维,但得到具有形状的数组(5448,7)

有什么问题吗?

在顺序数据的情况下,密集的
是按元素应用的。当您将序列馈送到
Dense
时,您将获得序列。您需要应用
池化
展平
,以便将数据从顺序数据转换为向量。如何在MNIST数据集上训练一个简单的深度神经网络?它也是顺序的,并且这种配置是有效的。请您举出一个“共享”或“扁平化”的例子,谢谢!它之所以有效,是因为图像被压缩/展平为向量。
Dense
在顺序数据的情况下,是按元素应用的。当您将序列馈送到
Dense
时,您将获得序列。您需要应用
池化
展平
,以便将数据从顺序数据转换为向量。如何在MNIST数据集上训练一个简单的深度神经网络?它也是顺序的,并且这种配置是有效的。请您举出一个“共享”或“扁平化”的例子,谢谢!这是因为图像被压缩/展平为向量。
Layer (type)                 Output Shape              Param #   
=================================================================
dense_23 (Dense)             (None, 30, 30)            9030      
_________________________________________________________________
dropout_18 (Dropout)         (None, 30, 30)            0         
_________________________________________________________________
dense_24 (Dense)             (None, 30, 30)            930       
_________________________________________________________________
dropout_19 (Dropout)         (None, 30, 30)            0         
_________________________________________________________________
dense_25 (Dense)             (None, 30, 7)             217       
=================================================================
Total params: 10,177
Trainable params: 10,177
Non-trainable params: 0
_________________________________________________________________
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-160-6a936b699825> in <module>()
----> 1 results = cross_val_score(estimator,X_train, Y_train , cv=kfold)
      2 print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))

...
...
...

D:\usr\anaconda\lib\site-packages\keras\engine\training.py in _standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)
    126                                  ' to have ' + str(len(shapes[i])) +
    127                                  ' dimensions, but got array with shape ' +
--> 128                                  str(array.shape))
    129             for j, (dim, ref_dim) in enumerate(zip(array.shape, shapes[i])):
    130                 if not j and not check_batch_axis:

ValueError: Error when checking target: expected dense_25 to have 3 dimensions, but got array with shape (5448, 7)