我想要一个简单的单层神经网络,它将一个 300 个数字的向量转换为另一个 300 个数字的向量。所以有:print(np.array(train_in).shape)print(np.array(train_t).shape)返回:(943, 300)(943, 300)我尝试以下操作:model = keras.Sequential()model.add(Dense(300, input_shape=(300,)))model.compile(optimizer=tf.train.AdamOptimizer(), loss='sparse_categorical_crossentropy', metrics=['accuracy'])model.fit(np.array(train_in), np.array(train_t), epochs=5)我越来越:ValueError: Error when checking target: expected dense_37 to have shape (1,) but got array with shape (300,)为什么预期目标有形状(1,)?一个有 300 个单位的层应该在输出上产生一个包含 300 个数字的向量,对吗?编辑:根据要求,这就是我的数据的样子:print(np.array(train_in))print(np.array(train_t))给出:[[-0.13841234 0.22157902 0.12244826 ... -0.10154381 -0.01824803 -0.08607237] [ 0.02228635 0.3353927 0.05389142 ... -0.23218463 -0.06550601 0.03365546] [ 0.22719774 0.25478157 -0.02882686 ... -0.36675575 -0.14722016 -0.22856475] ... [ 0.07122967 0.07579704 0.2376182 ... -0.5245226 -0.38911286 -0.5513026 ] [-0.05494669 -0.3587228 0.13438214 ... -0.6134821 -0.06194036 -0.46365416] [-0.16560836 -0.15729778 0.00067104 ... -0.01925305 -0.3984945 0.12297624]][[-0.20293862 0.27669927 0.19337481 ... -0.14366734 0.06025359 -0.1156549 ] [-0.02273261 0.20943424 0.26937988 ... -0.20701817 -0.03191033 0.03741883] [ 0.16326293 0.19438037 0.12544776 ... -0.37406632 -0.1527986 -0.29249507] ... [ 0.05573128 0.26873755 0.40287578 ... -0.65253705 -0.30244952 -0.68772614] [-0.02555208 -0.0485841 0.19109009 ... -0.2797842 -0.01007691 -0.53623134] [-0.30828896 0.04836991 -0.108813 ... -0.20583114 -0.40019956 0.11540392]]
1 回答
慕后森
TA贡献1802条经验 获得超5个赞
问题是你的损失,稀疏分类交叉熵在这种情况下没有意义,因为它用于分类,而且你似乎没有分类问题。要执行 300 维向量的回归,则均方误差更有意义。
使用稀疏分类交叉熵的问题在于,这种损失假设模型输出一个标量(一个元素向量),并且在运行时进行检查,但此检查失败,这就是您收到错误的原因。
此外,准确性在回归设置中毫无意义。
model.compile(optimizer=tf.train.AdamOptimizer(), loss='mean_squared_error')
添加回答
举报
0/150
提交
取消