python - 神经网络的输入大小不是预期的
问题描述
我正在尝试构建一个神经网络来对 reddit 消息进行如下分类:
original_train= train[0] # messages
data_list= original_train[0:500] # take first 500 examples as training set
originaly_train=train[1] # labels/ categories
y_train=originaly_train[0:500]
x_validation=original_train[500:1000] # take another 500 examples as training set
y_validation=originaly_train[500:1000]
model = Sequential()
model.add(layers.Dense(50, activation = "relu", input_shape=(1000, )))
# Hidden - Layers
model.add(layers.Dropout(0.3, noise_shape=None, seed=None))
model.add(layers.Dense(100, activation = "relu"))
model.add(layers.Dropout(0.2, noise_shape=None, seed=None))
model.add(layers.Dense(50, activation = "relu"))
# Output- Layer
model.add(layers.Dense(20, activation = "sigmoid"))
model.summary()
model.compile(loss="categorical_crossentropy",
optimizer="Adadelta",
metrics=['accuracy'])
model.fit(vectorized_training, y_train_neralnet,
batch_size=128,
epochs=12,
verbose=1,
validation_data=(vectorized_validation, y_validation_neralnet))
在这里,神经网络的输入向量应该是一个维度为 1000 的向量,而输出假设是大小为 20 的向量,因为我们试图对 20 个对象进行分类。
所以我的 vectorized_training 的形状为 (500,1000),而 y_train_neralnet 的形状为 (500,20),vectorized_validation 和 y_validation_neralnet 也是如此。
这是一个文本分类问题。所以我们有一组词。每个输入都是消息中出现的那些词的频率向量。相应的标签是一个维数为 20 的向量,在该向量中,您在特定位置获得 1,在其他位置获得 0,表示它属于 20 个标签中的哪一个。但我得到这个错误:
ValueError: Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 500 arrays: [array([[0],
[0],
[0],
[1],
[0],
[1],
[0],
[1],
[0],
[0],
[0],
[0],
[0],
[0],
[0],
[0],
...
解决方案
尝试将 input_shape=(1000,) 替换为 input_shape=(1000)
推荐阅读
- c - 通过仅发送更改的值来减少 Firebase 延迟?
- python - 提高梯度下降的速度
- elasticsearch - 在具有特殊字符的自定义关键字字段上使用术语查询时出现意外结果
- python - 使用 Textblob 从文本中删除所有名词短语
- stackexchange-api - 如何通过 1 个调用从不同对象获取信息?
- javascript - 如何根据我的变量的范围选择通过 Ajax 更新价格?
- apache-spark - 是否可以使用 YARN 容量调度程序在 Spark 上运行 Hive?
- java - JTable 列的标题不会显示
- c# - Linq with EF core 2.2 Condition with where Clause FK and PK
- websocket - 在检查 android 应用程序的 api websocket 期间,charles 出现未知错误