【问题标题】:How to develop a neural network to predict joint angles form joint positions and orientation如何开发神经网络来预测关节角度形成关节位置和方向
【发布时间】:2019-11-01 10:36:35
【问题描述】:

我是神经网络的新手。我有一个 3d 关节位置 (6400*23*3) 和四元数方向 (6400*23*4) 的数据集,我想预测所有 22 个关节和 3 个运动平面 (6400*22*3) 的关节角度。我试图制作一个模型,但它不会运行,因为输入数据与输出形状不匹配,我不知道如何更改它。

我的代码

import scipy
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv1D, MaxPooling2D, Dense, Flatten
from tensorflow.keras.utils import to_categorical
Jaload = scipy.io.loadmat('JointAnglesXsens11MovementsIforlængelse.mat') 
Orload = scipy.io.loadmat('OrientationXsens11MovementsIforlængelse.mat')
Or = np.array((Orload['OR'][:,:]), dtype='float')
Ja = np.array((Jaload['JA'][:,:]), dtype='float')
Jalabel = np.array(Ja)
a = 0.6108652382 
Jalabel[Jalabel<a] = 0
Jalabel[Jalabel>a] = 1
Ja3d = np.array(Jalabel.reshape(6814,22,3)) # der er 22 ledvinkler 
Or3d = np.array(Or.reshape(6814,23,4)) # der er 23 segmenter
X_train = np.array(Or3d)
Y_train = np.array(Ja3d)
model = Sequential([
  Dense(64, activation='relu', input_shape=(23,4)),
  Dense(64, activation='relu'),
  Dense(3, activation='softmax'),])
model.summary()
model.compile(loss='categorical_crossentropy', optimizer='adam') # works 
model.fit(
  X_train,
  to_categorical(Y_train),
  epochs=3,)

运行 model.fit 会返回: ValueError: 形状为 (6814, 22, 3, 2) 的目标数组被传递为形状 (None, 3) 的输出,同时用作损失 categorical_crossentropy。这种损失期望目标具有与输出相同的形状。

【问题讨论】:

    标签: python numpy tensorflow keras neural-network


    【解决方案1】:

    以下一些建议可能会让您走得更远:
    (1) 您可能想在最终密集之前插入一个“Flatten()”层。这基本上会将前几层的输出折叠成一个维度。
    (2) 您可能想让最终的 Dense 层有 22*3=66 个单位,而不是三个。每个输出单元将代表一个特定的关节角度。
    (3) 您可能还想使用 numpy reshape 将 Y_train 折叠为 (num_samples, 22*3)。
    (4) 您可能希望使最终的 Dense 层具有“线性”激活而不是“softmax” - softmax 将强制输出总和为 1 作为概率。
    (5) 不要将 y_train 转换为分类。我相信它已经是正确的格式(在你重塑它以匹配模型的修订输出之后)。
    (6) 使用的度量可能不是“categorical_crossentropy”,而可能是“mse”(均方误差)。

    希望以上内容能帮助您朝着正确的方向前进。我希望这会有所帮助。

    【讨论】:

    • @Masilila 你用的是什么版本的tensorflow?
    • @FrederikPetri 我正在使用 TensorFlow 2.0
    猜你喜欢
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 2018-06-08
    • 2020-05-08
    • 1970-01-01
    • 2017-12-02
    相关资源
    最近更新 更多