gpt4 book ai didi

python - Keras:输入层并正确传递输入数据

转载 作者:行者123 更新时间:2023-11-30 09:46:57 27 4
gpt4 key购买 nike

我正在学习使用 Keras 功能 API,并且已成功构建和编译模型。但是当我调用 model.fit 传递数据 X 和标签 y 时,出现错误。看来我还是不明白它是如何工作的。

任务是将句子分为 6 种类型,代码如下:

X_ = ... # shape: (2787, 100) each row a sentence and each column a feature
y_= ... # shape: (2787,)

word_matrix_weights= ... # code to initiate a lookup matrix for vocabulary embeddings. shape: (9825,300)

deep_inputs = Input(shape=(100,))
embedding = Embedding(9825, 300, input_length=100,
weights=[word_matrix_weights], trainable=False)(deep_inputs)
flat = Flatten()(embedding)
hidden = Dense(6, activation="softmax")(flat)

model = Model(inputs=deep_inputs, outputs=hidden)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

model.fit(x=X_,y=y_,epochs=100, batch_size=10, verbose=0) #error here

最后一行生成错误:

  File "/home/zz/Programs/anaconda3/lib/python3.6/site-packages/keras/engine/training.py", line 1555, in fit
batch_size=batch_size)
File "/home/zz/Programs/anaconda3/lib/python3.6/site-packages/keras/engine/training.py", line 1413, in _standardize_user_data
exception_prefix='target')
File "/home/zz/Programs/anaconda3/lib/python3.6/site-packages/keras/engine/training.py", line 154, in _standardize_input_data
str(array.shape))
ValueError: Error when checking target: expected dense_1 to have shape (None, 6) but got array with shape (2878, 1)

请问有什么建议吗?

最佳答案

您有一个包含 6 个单元的密集层,最后一层是 softmax 激活。因此它的输出将是 (?,6) 形状,其中这 6 个值中的每一个都表示属于相应类别的概率。由于您已使用 categorical_crossentropy 作为损失函数,因此标签(即 y_)应具有相同的形状(即 (2787,6))以及。您可以使用to_categoricaly_进行one-hot编码方法:

from keras.utils import to_categorical

y_ = to_categorical(y_)

这个 one-hot 对标签进行编码,即将 3 转换为 [0,0,0,1,0,0] (假设标签编号从零开始) .

如果您不想对标签进行一次性编码,可以将 loss 参数更改为 'sparse_categorical_crossentropy'

关于python - Keras:输入层并正确传递输入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51342763/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com