我已经用NN和tensorflow做了一些线性回归,但我的输入是一个pandas数据框(X_train)。现在我要创建一个有坐标的神经网络。我有X1(X1,y1)和X2(X2,y2)作为输入。X1。形状:75、2、120、X2。形状:75、2、120和y.形状: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()