Python ValueError:(205087,)但在keras中的onehot向量上使用fit_生成器得到(1,)

Python ValueError:(205087,)但在keras中的onehot向量上使用fit_生成器得到(1,),python,numpy,keras,tf.keras,Python,Numpy,Keras,Tf.keras,好吧,我正在试验keras作为一个项目的一部分,我得到了以下我似乎无法解决的错误: ValueError:检查输入时出错:预期输入_1具有形状(205087,),但获得具有形状(1,)的数组。 我的代码如下: import tensorflow as tf import numpy as np from tensorflow.keras.layers import Input, Dense, Concatenate from tensorflow.keras.models import Mode

好吧,我正在试验keras作为一个项目的一部分,我得到了以下我似乎无法解决的错误:
ValueError:检查输入时出错:预期输入_1具有形状(205087,),但获得具有形状(1,)的数组。
我的代码如下:

import tensorflow as tf
import numpy as np
from tensorflow.keras.layers import Input, Dense, Concatenate
from tensorflow.keras.models import Model

def iterdata():
    while(True):
        for d in data: #data is already defined in my script
            val=tf.keras.utils.to_categorical(d, num_classes=vocab_size) #this is the one_hot vector that causes troubles
            yield val, 0
word = Input(shape=(vocab_size,))
encode = Dense(1, activation=None)
encoded = shared_encode(word)

model = Model(inputs=word, outputs=encoded)
model.compile(loss='mean_squared_error',
              optimizer='rmsprop',
              metrics=['accuracy'])
H = model.fit_generator(iterdata(), 
        epochs=10,
        steps_per_epoch=10) #according to the Traceback, error happens while running this line
运行:

for d in iterdata():
    print(d[0].shape)
正确打印
(205087,)
所以我不知道该怎么处理它,我尝试过生成
np.asarray([val])
,但是仍然得到了相同的错误。 你知道怎么解决这个问题吗?

我找到了解决办法。 如果这种情况发生在您身上,您需要知道keras以批处理的方式接收输入,所以您的数组需要更深一步。 在我的例子中,我将其重塑为
(1205807)
修复了这个问题,因为它与生成它的事实无关,也与任何其他原因无关,格式与预期不符

例如,如果您的模型接受以下数据:
[1,2,3]
您需要为它添加
[[1,2,3]]