以 3d numpys 作为输入和线性回归(一个输出)的神经网络

Neural network with 3d numpys as input and linear regression (one output)

我已经用 NN 和 tensorflow 做了一些线性回归,但我的输入是一个 pandas 数据框 (X_train)。 现在我想创建一个带坐标的神经网络。我将 X1(x1,y1) 和 X2(x2,y2) 作为输入。 X1.shape:75、2、120 和 X2.shape:75、2、120 和 y.shape:75,1

NN网络的架构应该是怎样的?? 我试过这个:


print('Shape X1:', np.shape(X1))
Shape X1: (75, 2, 120)

model = keras.Sequential()
model.add(layers.Dense(50, input_dim=len(X1[1]), kernel_initializer='normal', activation='relu'))
model.add(layers.Dense(50, activation='relu'))
model.add(layers.Dense(1, activation="linear"))
model.summary()

loss = 'mse'
metric = ['mse']                                       
model.compile(loss=loss,
              optimizer= tf.keras.optimizers.Adam(learning_rate=0.001),
              metrics=metric)
history = model.fit(X1, y, epochs=50, validation_split=0.3, verbose=1) 

这是我遇到的错误: ValueError:层 sequential_6 的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 2 但接收到形状为 [None、2、120]

的输入

更改输入形状。你必须删除一维:

import tensorflow as tf
X1 = tf.random.uniform((75, 2, 120))
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(50, input_shape=(X1.shape[1], X1.shape[2]), kernel_initializer='normal', activation='relu'))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(50, activation='relu'))
model.add(tf.keras.layers.Dense(1, activation="linear"))
model.summary()