好吧,所以我正在作为项目的一部分尝试使用keras,但遇到了以下我似乎无法解决的错误:
ValueError: Error when checking input: expected input_1 to have shape (205087,) but got array with shape (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])
,但仍然遇到相同的错误。
关于如何解决此问题的任何想法?
答案 0 :(得分:0)
我找到了解决方法。
万一发生这种情况,您需要知道keras会分批接收输入,因此您的数组需要更深一层。
在我的情况下,将其重塑为(1,205807)
可以解决此问题,因为它与生成它的事实或任何其他原因无关,该格式与预期不符。
例如,如果您的模型接受如下数据:
[1,2,3]
,您需要[[1,2,3]]