我在 fit_generator 上遇到错误。我的生成器返回以下内容:
yield(row.values, label)
例如,使用它:
myg = generate_array()
for i in myg:
print((i[0].shape))
print(i)
break
(9008,)
(array([0.116516, 0.22419 , 0.03373 , ..., 0. , 0. , 0. ]), 0)
但是以下内容引发异常:
model = Sequential()
model.add(Dense(84, activation='relu', input_dim=9008))
ValueError: Error when checking input: expected dense_1_input to have shape
(9008,) but got array with shape (1,)
有什么主意吗?
答案 0 :(得分:1)
正如Kota Mori所建议:数据生成器需要提供一批数据,而不是单个样本。参见例如:https://stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly
由于我想要随机梯度下降(批量大小为1),因此以下代码解决了该问题:
public class ShouldItCompile {
public static void main(String[] args) {
AtomicLong value1 = new AtomicLong(0);
final long[] value2 = {0};
IntStream.iterate(1, i -> 1).limit(100).parallel().forEach(i -> value1.incrementAndGet());//line1
IntStream.iterate(1, i -> 1).limit(100).parallel().forEach(i -> ++value2[0]);//line2
System.out.println(value1+" "+value2[0]);
}
}