Numpy 为什么这个模型给了我一个“答案”;“值错误”;

Numpy 为什么这个模型给了我一个“答案”;“值错误”;,numpy,keras,Numpy,Keras,它给了我一个我不理解的值错误。它是这样说的: 检查模型输入时出错:传递给模型的Numpy数组列表的大小不是模型预期的大小。预计会看到2个数组,但得到了以下1个数组的列表“我的数据有8列,我正在尝试预测最后2列的输出 这是一个排名算法,我正在用自己的数据进行实验: import pandas as pd import keras import numpy as np import pandas as pd from sklearn.model_selection import train_tes

它给了我一个我不理解的值错误。它是这样说的:

检查模型输入时出错:传递给模型的Numpy数组列表的大小不是模型预期的大小。预计会看到2个数组,但得到了以下1个数组的列表“我的数据有8列,我正在尝试预测最后2列的输出

这是一个排名算法,我正在用自己的数据进行实验:

import pandas as pd
import keras
import numpy as np

import pandas as pd
from sklearn.model_selection import train_test_split


from keras import backend

from keras.layers import Activation, Dense, Input, Subtract

from keras.models import Model



INPUT_DIM = 7



# Model.

h_1 = Dense(128, activation="relu")

h_2 = Dense(64, activation="relu")

h_3 = Dense(32, activation="relu")

s = Dense(1)



# Relevant document score.

rel_doc = Input(shape=(INPUT_DIM,), dtype="float32")

h_1_rel = h_1(rel_doc)

h_2_rel = h_2(h_1_rel)

h_3_rel = h_3(h_2_rel)

rel_score = s(h_3_rel)



 # Irrelevant document score.

irr_doc = Input(shape=(INPUT_DIM,), dtype="float32")

h_1_irr = h_1(irr_doc)

h_2_irr = h_2(h_1_irr)

h_3_irr = h_3(h_2_irr)

irr_score = s(h_3_irr)



# Subtract scores.

diff = Subtract()([rel_score, irr_score])



# Pass difference through sigmoid function.

prob = Activation("sigmoid")(diff)



# Build model.

model = Model(inputs=[rel_doc, irr_doc], outputs=prob)

model.compile(optimizer="adadelta", loss="binary_crossentropy")



#  data.
data=pd.read_csv('ranking_dataset_remastered.csv')
print (data.head())
X = data.iloc[:, 1:7]
y = data.iloc[:, 6:7]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 
 0.2)
)

 # Train model.

 NUM_EPOCHS = 20

BATCH_SIZE = 512

history = model.fit(X_train, y_train, batch_size=BATCH_SIZE, 
 epochs=NUM_EPOCHS, verbose=1)



# Generate scores from document/query features.

get_score = backend.function([rel_doc], [rel_score])

get_score([X_train])

get_score([y_train])

使用此行定义模型时:

model=model(输入=[rel\u doc,irr\u doc],输出=prob)
您创建了keras所指的a,这本质上意味着您的模型需要多个输入(在您的案例2中:
rel\u doc
irr\u doc

但是,在培训期间,您只需通过1个输入,
X\u train

history=model.fit(X列、y列、批量大小=批量大小、,
epochs=NUM_epochs,verbose=1)
为了工作,您应该做的是使用两个数组,一个表示相关文档,另一个表示不相关文档,并在如下培训期间将它们都提供给模型:

history=model.fit([X\u rel\u train,X\u irr\u train],y\u train,batch\u size=batch\u size,
epochs=NUM_epochs,verbose=1)

使用此行定义模型时:

model=model(输入=[rel\u doc,irr\u doc],输出=prob)
您创建了keras所指的a,这本质上意味着您的模型需要多个输入(在您的案例2中:
rel\u doc
irr\u doc

但是,在培训期间,您只需通过1个输入,
X\u train

history=model.fit(X列、y列、批量大小=批量大小、,
epochs=NUM_epochs,verbose=1)
为了工作,您应该做的是使用两个数组,一个表示相关文档,另一个表示不相关文档,并在如下培训期间将它们都提供给模型:

history=model.fit([X\u rel\u train,X\u irr\u train],y\u train,batch\u size=batch\u size,
epochs=NUM_epochs,verbose=1)

请从代码中删除所有不必要的换行符,在
=
符号周围添加空格,等等。这很难阅读。另外,请告诉我们引发异常的代码行;您可以在代码中使用
突出显示它。请从代码中删除所有不必要的换行符,在
=
符号周围添加空格,等等。它已经被删除很难读懂。还要告诉我们引发异常的代码行;您可以在代码中用
#突出显示它,那么我也应该有2个y列吗?下面是我更新的内容,但仍然是值错误,即“检查输入时出错:预期输入25有形状(7),但有形状(6)的数组”“从sklearn.model_selection导入熊猫作为pd导入训练测试分割数据。data=pd.read_csv('ranking_dataset_remastered.csv')X1=data.iloc[:9960,1:7]y1=data.iloc[:9960,6:7]X2=data.iloc[1:9961,:]y2=data.iloc[1:9961,6:7]X1_列,X1_测试,y1_列,y1_测试=列测试分割(X1,y1,测试尺寸=0.2)X2_列,X2_测试,y2_测试,y2_测试,y2_测试尺寸=列(X1,y2)对于您的第一个测试题,不,您有两个
X_train
,因为您定义了一个多输入模型(即有两个不同的输入路径)。另一方面,您只定义了一个输出,因此您只有一个
y\u序列
。请记住,您必须为模型提供您之前定义的内容。对于第二个问题,您需要关注错误消息所说的内容:
预期输入为形状(7),但得到了形状为(6)的数组。
这意味着pandas认为它将获得具有7个特征的输入,而您只提供了一个具有6个特征的输入!在定义过程中更改输入形状,使其接受6个特征,或者按照预期为其提供7个特征。如何在此模型中定义相同的训练和2个不同的输出进行比较?我希望输出具有相关性和无关性。输入是一样的..那么我也应该有2个y_序列吗?这里是我更新的但仍然是值错误的“检查输入时出错:预期输入_25有形状(7),但得到了形状(6)的数组”从sklearn.model_selection导入pandas作为pd导入train_test#split#数据。data=pd.read_csv('ranking_dataset_remastered.csv')X1=data.iloc[:9960,1:7]y1=data.iloc[:9960,6:7]X2=data.iloc[1:9961,:]y2=data.iloc[1:9961,6:7]X1_列,X1_测试,y1_列,y1_测试=列测试分割(X1,y1,测试尺寸=0.2)X2_列,X2_测试,y2_测试,y2_测试,y2_测试尺寸=列(X1,y2)对于您的第一个测试题,不,您有两个
X_train
,因为您定义了一个多输入模型(即有两个不同的输入路径)。另一方面,您只定义了一个输出,因此您只有一个
y\u序列
。请记住,您必须为模型提供您之前定义的内容。对于第二个问题,您需要关注错误消息所说的内容:
预期输入为形状(7),但得到了形状为(6)的数组。
这意味着pandas认为它将获得具有7个特征的输入,而您只提供了一个具有6个特征的输入!在定义过程中更改输入形状,使其接受6个特征,或者按照预期为其提供7个特征。如何在此模型中定义相同的训练和2个不同的输出进行比较?我希望输出具有相关性和无关性。输入是相同的。。