You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Keras构建神经网络时遇数组形状无效错误求助

问题分析与解决方法

嘿,我帮你找出代码里的几个关键问题啦,这就是你运行出错的核心原因:

主要错误点

  • 变量赋值完全混乱:你把训练数据、测试数据、标签的赋值全搞混了,直接导致模型输入的维度和类型完全不符合要求:
    • 你错误地将y_train赋值为测试数据的向量化结果,这应该是x_test的内容
    • 你用train_labels覆盖了之前正确生成的x_train,这让模型训练时输入的不是文本向量化后的特征(维度(25000, 10000)),而是一维的标签数据(维度(25000,)),模型肯定会报错
    • 你漏了给y_train正确赋值,应该把训练标签转成float32类型
  • 未定义x_test变量:后面调用model.evaluate(x_test, y_test)时,x_test根本没定义,会触发NameError

修正后的完整代码

from keras.datasets import imdb
import numpy as np
from keras import models
from keras import layers

# 加载数据集
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)

# 向量化序列函数
def vectorize_sequences(sequences, dimension=10000):
    results = np.zeros((len(sequences), dimension))
    for i, sequence in enumerate(sequences):
        results[i, sequence] = 1.
    return results

# 正确赋值:训练数据、测试数据向量化,标签转成float32
x_train = vectorize_sequences(train_data)
x_test = vectorize_sequences(test_data)  # 修正:这里应该是x_test
y_train = np.asarray(train_labels).astype('float32')  # 修正:定义y_train
y_test = np.asarray(test_labels).astype('float32')

# 构建模型
model = models.Sequential()
model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))
model.add(layers.Dense(16, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

# 编译与训练
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=4, batch_size=512)
# 评估模型
results = model.evaluate(x_test, y_test)
print(results)

关键修改说明

  1. 将y_train = vectorize_sequences(test_data)改为x_test = vectorize_sequences(test_data):正确生成测试集的特征数据
  2. 新增y_train = np.asarray(train_labels).astype('float32'):正确定义训练集标签
  3. 删除了覆盖x_train的错误代码x_train = np.asarray(train_labels).astype('float32'):保留了正确的训练特征数据

这样修改后,模型的输入特征(x_train、x_test)维度是(样本数, 10000),标签(y_train、y_test)是一维的float32类型,完全符合模型的要求,就能正常运行啦。

内容的提问来源于stack exchange,提问作者rmahesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:37:06