python - ValueError:检查模型目标时出错:您传递给模型的 Numpy 数组列表不是模型预期的大小
问题描述
我有多输出
out = [Dense(19, name='one', activation='softmax')(out),
Dense(19, name='two', activation='softmax')(out),
Dense(19, name='three', activation='softmax')(out),
Dense(19, name='four', activation='softmax')(out)]
model.fit(reshape_train_X, y_onehot, batch_size=400, epochs=100, verbose=2,
validation_split=0.2, callbacks=callbacks_list)
这是我的 y_onehot 格式:
[array([[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]],
dtype=uint8), array([[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]],dtype=uint8),.....]
我收到了这个错误信息
ValueError: Error when checking model target: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 4 array(s), but instead got the following list of 5000 arrays: [array([[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
...
我不知道为什么当 y_onehot 在数组中有四个列表时会出现这个错误。
长度(y_onehot):5000
打印(“y_onehot”,y_onehot[0])
[[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0]]
打印(“y_onehot”,len(y_onehot[0]))
y_onehot 4
我试试这个 。但仍然没有工作。
谢谢你的帮助。
解决方案
这是一个虚拟的例子。注意你的y。你必须传入 fit 每个输出分开
inp = Input((50))
x = Dense(32)(inp)
x1 = Dense(19, name='one', activation='softmax')(x)
x2 = Dense(19, name='two', activation='softmax')(x)
x3 = Dense(19, name='three', activation='softmax')(x)
x4 = Dense(19, name='four', activation='softmax')(x)
model = Model(inp, [x1,x2,x3,x4])
model.compile('adam', 'categorical_crossentropy')
X = np.random.uniform(0,1, (5000,50))
y1 = np.random.randint(0,2, (5000,19))
y2 = np.random.randint(0,2, (5000,19))
y3 = np.random.randint(0,2, (5000,19))
y4 = np.random.randint(0,2, (5000,19))
model.fit(X, [y1,y2,y3,y4], epochs=10)
推荐阅读
- reactjs - 如何从 LinkedIn oAuth2 读取 accessToken
- apache-kafka - 卡夫卡代理作为中间
- forms - 如何在街道地址字段的magento 2结帐上添加工具提示?
- linux-kernel - 在 Linux 内核中获取帧计数
- asp.net-mvc - 如何从 Identity Server 启动调用 API
- javascript - graphql 变异参数名称为 [Object: null prototype]
- highcharts - Highcharts:如何对齐饼图的文本标签中间中心
- javascript - 根据另一个数组中的值对数组进行排序 - Javascript
- angular - 为什么 ngAfterViewInit 中的 formGroup (formRef.form) 为空?
- javascript - 如何改进这个 Promise 链接并获得相同的行为