python - 我不明白使用 mxnet 的“形状不一致”错误
问题描述
来自 Keras,我尝试使用 MXNet 重现我的简单模型,以使用 Module 进行预测。
我正在使用那个简单的数据集:https ://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data
我有 13 个输入(从酒精到脯氨酸)要发送到模型,我需要对第一列“葡萄酒类型”进行分类,因此我创建了一个包含 3 个条目的 nd.array。
x = data.values[: , 1:14]
y = data.values[:, 0]
X = mx.nd.array(x)
Y = []
for i, v in enumerate(y):
d = [0,0,0]
d[int(v)-1] = 1
Y.append(d)
Y = mx.nd.array(Y)
Y.shape, X.shape
# ((178, 3), (178, 13))
然后我创建模型和一个 NDIterator:
net = mx.symbol.Variable('winechemical')
net = mx.symbol.FullyConnected(net, num_hidden=64)
net = mx.symbol.Activation(net, act_type='relu')
net = mx.symbol.FullyConnected(net, num_hidden=32)
net = mx.symbol.Activation(net, act_type='relu')
net = mx.symbol.FullyConnected(net, num_hidden=16)
net = mx.symbol.SoftmaxOutput(net, name='wineclass')
model = Module(symbol=net, context=mx.cpu(),
data_names=['winechemical'],
label_names=['wineclass_label'])
gen = mx.io.NDArrayIter(X, label=Y,
batch_size=10,
shuffle=True, data_name='winechemical',
label_name='wineclass_label')
但是当我尝试使用“fit”方法“训练”模型时,我得到了这个错误:
model.fit(gen, num_epoch=5) [...] 运算符 wineclass 中的错误:形状不一致,提供 = [10,3],推断形状 = [10]
我很确定我不了解要使用的形状,因为我来自使用不同形状的 Keras……但我错在哪里?
谢谢你的帮助。
解决方案
您已经自己找到了解决方案。但是如果你再次遇到类似的问题,你可以使用mx.visualization.print_summary()这个函数对于检查模型中不同层的形状非常有用。
推荐阅读
- amazon-web-services - 在 Lambda 上运行 Prometheus
- javascript - Vue 在使用 v-for 时无法读取 null 的属性
- firebase - Firestore 规则:执行 setData 时出错,PERMISSION_DENIED
- bash - 如何对包含 shellscript 中特定字符的变量中设置的文件名进行 cp / mv 或命令?
- django - fileField 是否可以在 django 中保存 url
- ssl - 如何在 Amazon EC2 中安装 GoDaddy SSL 证书
- python - 尝试抓取 ASP 网页时出现 HTTPError 500
- php - PHP 将字符串数组修改为数组数组
- google-analytics - 包含 # 的超链接的 Google Analytics(分析)跨域测量问题
- python-3.x - 在 Python 中允许大写的“是”输入和非大写的“是”输入或值的正确方法是什么?