Python 运行model.fit()时tf.keras(RNN)层出现问题
我正在构建一个RNN,使用TensorFlow、Pandas和Keras分析运动捕捉(MoCap)数据 关于我的数据:Python 运行model.fit()时tf.keras(RNN)层出现问题,python,pandas,keras,recurrent-neural-network,tensorflow2.0,Python,Pandas,Keras,Recurrent Neural Network,Tensorflow2.0,我正在构建一个RNN,使用TensorFlow、Pandas和Keras分析运动捕捉(MoCap)数据 关于我的数据: 数据通过pandas.read_csv获取,形状为 (832165) 每行表示移动序列中的一整帧数据(832帧) 每列表示关节的旋转数据(总共165个关节) 我试图一次一行输入数据。输出应该是移动序列中的下一帧。在运行model.fit时,我不断遇到不同类型的错误 我附上了一系列的照片,代表了不同的尝试,使模型的工作。如果有人能提供一些指导,说明为什么它不起作用以及如何修复
- 数据通过pandas.read_csv获取,形状为 (832165)
- 每行表示移动序列中的一整帧数据(832帧)
- 每列表示关节的旋转数据(总共165个关节)
model.fit
时,我不断遇到不同类型的错误
我附上了一系列的照片,代表了不同的尝试,使模型的工作。如果有人能提供一些指导,说明为什么它不起作用以及如何修复,我将不胜感激
作为旁注,我的代码的每个版本都是不同的。我可以使用any,只要它最终能够工作,那么在提供反馈时,您是否可以确定您所谈论的是我的代码的哪个版本
使用tf.data.Dataset
作为输入
第3版:
将熊猫数组用于输入和目标
使用代码4作为故障排除的基础,我注意到您正在将不兼容的形状传递给层 这一行
model.add(keras.layers.InputLayer(input\u shape=(N\u TIMESTEPS,N\u FEATURES))
希望您的数据具有相同的形状。
虽然您的数据有(832165)
,这是第一个索引上的N_样本和N_特征,但N_时间步缺失
首先,您应该创建一个修改过的数据集,该数据集将生成(N\u个样本、N\u个时间步、N\u个特征)
以下是生成虚拟数据集的示例:
data = tf.random.normal((N_SAMPLES, N_TIMESTEPS, N_FEATURES))
target = tf.random.normal((N_SAMPLES, N_TIMESTEPS, N_FEATURES))
<> P> >在LSTM中,<强> > NyTimeStase>在LSTM中很重要,因为它决定每次更新要考虑多少时间步骤。
以下是在Google Colab中模拟成功执行的完整代码。
%tensorflow_version 2.x # To ensure latest Tensorflow version in Google Colab
import tensorflow as tf
import tensorflow.keras as keras
print(tf.__version__) # Tensorflow 2.2.0-rc3
BATCH_SIZE = 1
N_TIMESTEPS = 10
#Data is obtained through pandas.read_csv and has a shape of (832, 165)
#Each row denotes a whole frame of data in a movement sequence (832 frames)
#Each column denotes the rotational data for a joint (165 joints total)
# N_SAMPLES = data.values.shape[0]
# N_FEATURES = data.values.shape[1]
N_SAMPLES = 832
N_FEATURES = 165
def get_compiled_model():
model = keras.Sequential()
model.add(keras.layers.InputLayer(input_shape = (N_TIMESTEPS, N_FEATURES)))
model.add(keras.layers.LSTM(35, activation = 'relu', return_sequences = True))
model.add(keras.layers.LSTM(35, activation = 'relu', return_sequences = True))
model.add(keras.layers.Dense(165, activation = 'tanh'))
model.compile(optimizer = 'adam',
loss = 'mse',
metrics = ['accuracy'])
return model
model = get_compiled_model()
model.summary()
data = tf.random.normal((N_SAMPLES, N_TIMESTEPS, N_FEATURES))
target = tf.random.normal((N_SAMPLES, N_TIMESTEPS, N_FEATURES))
model.fit(data, target, epochs = 15, batch_size = BATCH_SIZE, shuffle = False)
希望这对你有帮助
在本文中,您可以使用RNN阅读更多有关Tensorflow Keras指南的信息 使用代码4作为故障排除的基础,我注意到您正在向层传递不兼容的形状 这一行
model.add(keras.layers.InputLayer(input\u shape=(N\u TIMESTEPS,N\u FEATURES))
希望您的数据具有相同的形状。
虽然您的数据有(832165)
,这是第一个索引上的N_样本和N_特征,但N_时间步缺失
首先,您应该创建一个修改过的数据集,该数据集将生成(N\u个样本、N\u个时间步、N\u个特征)
以下是生成虚拟数据集的示例:
data = tf.random.normal((N_SAMPLES, N_TIMESTEPS, N_FEATURES))
target = tf.random.normal((N_SAMPLES, N_TIMESTEPS, N_FEATURES))
<> P> >在LSTM中,<强> > NyTimeStase>在LSTM中很重要,因为它决定每次更新要考虑多少时间步骤。
以下是在Google Colab中模拟成功执行的完整代码。
%tensorflow_version 2.x # To ensure latest Tensorflow version in Google Colab
import tensorflow as tf
import tensorflow.keras as keras
print(tf.__version__) # Tensorflow 2.2.0-rc3
BATCH_SIZE = 1
N_TIMESTEPS = 10
#Data is obtained through pandas.read_csv and has a shape of (832, 165)
#Each row denotes a whole frame of data in a movement sequence (832 frames)
#Each column denotes the rotational data for a joint (165 joints total)
# N_SAMPLES = data.values.shape[0]
# N_FEATURES = data.values.shape[1]
N_SAMPLES = 832
N_FEATURES = 165
def get_compiled_model():
model = keras.Sequential()
model.add(keras.layers.InputLayer(input_shape = (N_TIMESTEPS, N_FEATURES)))
model.add(keras.layers.LSTM(35, activation = 'relu', return_sequences = True))
model.add(keras.layers.LSTM(35, activation = 'relu', return_sequences = True))
model.add(keras.layers.Dense(165, activation = 'tanh'))
model.compile(optimizer = 'adam',
loss = 'mse',
metrics = ['accuracy'])
return model
model = get_compiled_model()
model.summary()
data = tf.random.normal((N_SAMPLES, N_TIMESTEPS, N_FEATURES))
target = tf.random.normal((N_SAMPLES, N_TIMESTEPS, N_FEATURES))
model.fit(data, target, epochs = 15, batch_size = BATCH_SIZE, shuffle = False)
希望这对你有帮助
在本文中,您可以使用RNN阅读更多有关Tensorflow Keras指南的信息