Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:层sequential_54的输入0与层不兼容:预期ndim=3,发现ndim=2。收到完整形状:(无,96)_Python_Tensorflow_Deep Learning - Fatal编程技术网

Python ValueError:层sequential_54的输入0与层不兼容:预期ndim=3,发现ndim=2。收到完整形状:(无,96)

Python ValueError:层sequential_54的输入0与层不兼容:预期ndim=3,发现ndim=2。收到完整形状:(无,96),python,tensorflow,deep-learning,Python,Tensorflow,Deep Learning,我尝试使用LSTM来适应模型,但我收到了这个eroor 我在google和stack overflow上搜索了很多,但仍然不知道如何解决这个问题 这是X_列和y_列的输入形状 print(X_train.shape, y_train.shape) (56,96)(56,3) 这是X_测试和y_测试的输入形状 print(X_test.shape, y_test.shape) (14,96)(14,3) 这是我的密码 import numpy as np import tensorflow a

我尝试使用LSTM来适应模型,但我收到了这个eroor

我在google和stack overflow上搜索了很多,但仍然不知道如何解决这个问题

这是X_列和y_列的输入形状

print(X_train.shape, y_train.shape)
(56,96)(56,3)

这是X_测试和y_测试的输入形状

print(X_test.shape, y_test.shape)
(14,96)(14,3)

这是我的密码

import numpy as np
import tensorflow as tf
from tensorflow import keras
import pandas as pd

from google.colab import drive
drive.mount('/content/drive')

df = pd.read_csv('/content/drive/MyDrive/lastUpdate.csv')

df.head()

df.shape

df.tail()

#df.dropna(inplace=True )

from sklearn.model_selection import train_test_split

y = df['Activity']

x = df.drop(['Trajectory', 'Activity', 'id' ,'video' ] , axis=1)

x.head()

y.head()

y.dropna(inplace=True)

y.isnull().sum()

y.head()

y.unique()

vals_to_replace = {'drifting':'0', 'normal':'1', 'normal ':'1','static':'2'}
y = y.map(vals_to_replace)

y.unique()



y.isnull().sum()



from keras.utils.np_utils import to_categorical

y = to_categorical(y, num_classes = 3)

X_train, X_test, y_train, y_test = train_test_split( x, y, test_size=0.20, random_state=42)

from keras.layers import Input

print(X_train.shape, y_train.shape)

#X_train.dropna(inplace=True , axis=1)

print(X_test.shape, y_test.shape)

#X_train= np.asarray(X_train).astype(np.float32)
#X_test= np.asarray(X_test).astype(np.float32)
#y_train= np.asarray(y_train).astype(np.float32)
#y_test= np.asarray(y_test).astype(np.float32)

import tensorflow as tf

X_train = tf.constant(X_train, dtype=tf.float32)
X_test = tf.constant(X_test, dtype=tf.float32)
y_train = tf.constant(y_train, dtype=tf.float32)
y_test = tf.constant(y_test, dtype=tf.float32)

X_train


from tensorflow.keras import datasets, layers, models

model = keras.Sequential()
model.add(layers.LSTM(units=128 , input_shape=(None,96)))
#model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
#model.add(layers.BatchNormalization())
model.add(layers.Dropout(0.5))
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(3, activation = 'softmax'))

opt=tf.keras.optimizers.SGD(learning_rate=1e-4, momentum=0.9)
model.compile(loss='categorical_crossentropy', 
              optimizer=opt, 
              metrics=['accuracy'])

model.summary()

BATCH_SIZE=64
EPOCHS=100

history=model.fit(X_train, y_train, 
          batch_size=BATCH_SIZE, 
          epochs=EPOCHS, 
          verbose=1,
          validation_data=(X_test, y_test)
         )

然而,等待的LSTM层期望输入具有
的形状(批大小、时间步长、输入尺寸)
。但这里您只通过了
input\u dim
。您可以尝试添加一个维度,即
timesteps
将解决您的问题。有关更多信息,请参阅此。谢谢
import numpy as np
import tensorflow as tf
from tensorflow import keras
import pandas as pd

from google.colab import drive
drive.mount('/content/drive')

df = pd.read_csv('/content/drive/MyDrive/lastUpdate.csv')

df.head()

df.shape

df.tail()

#df.dropna(inplace=True )

from sklearn.model_selection import train_test_split

y = df['Activity']

x = df.drop(['Trajectory', 'Activity', 'id' ,'video' ] , axis=1)

x.head()

y.head()

y.dropna(inplace=True)

y.isnull().sum()

y.head()

y.unique()

vals_to_replace = {'drifting':'0', 'normal':'1', 'normal ':'1','static':'2'}
y = y.map(vals_to_replace)

y.unique()



y.isnull().sum()



from keras.utils.np_utils import to_categorical

y = to_categorical(y, num_classes = 3)

X_train, X_test, y_train, y_test = train_test_split( x, y, test_size=0.20, random_state=42)

from keras.layers import Input

print(X_train.shape, y_train.shape)

#X_train.dropna(inplace=True , axis=1)

print(X_test.shape, y_test.shape)

#X_train= np.asarray(X_train).astype(np.float32)
#X_test= np.asarray(X_test).astype(np.float32)
#y_train= np.asarray(y_train).astype(np.float32)
#y_test= np.asarray(y_test).astype(np.float32)

import tensorflow as tf

X_train = tf.constant(X_train, dtype=tf.float32)
X_test = tf.constant(X_test, dtype=tf.float32)
y_train = tf.constant(y_train, dtype=tf.float32)
y_test = tf.constant(y_test, dtype=tf.float32)

X_train


from tensorflow.keras import datasets, layers, models

model = keras.Sequential()
model.add(layers.LSTM(units=128 , input_shape=(None,96)))
#model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
#model.add(layers.BatchNormalization())
model.add(layers.Dropout(0.5))
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(3, activation = 'softmax'))

opt=tf.keras.optimizers.SGD(learning_rate=1e-4, momentum=0.9)
model.compile(loss='categorical_crossentropy', 
              optimizer=opt, 
              metrics=['accuracy'])

model.summary()

BATCH_SIZE=64
EPOCHS=100

history=model.fit(X_train, y_train, 
          batch_size=BATCH_SIZE, 
          epochs=EPOCHS, 
          verbose=1,
          validation_data=(X_test, y_test)
         )