如何修复 Conv1D 自动编码器 'expect to have 3 dimensions ...'
How to fix Conv1D Autoencoder 'expect to have 3 dimensions ...'
我想将此代码用作自动编码器:
# ENCODER
input_sig = Input(batch_shape=(None,1389,1))
x = Conv1D(64,3, activation='relu', padding='valid')(input_sig)
x1 = MaxPooling1D(2)(x)
x2 = Conv1D(32,3, activation='relu', padding='valid')(x1)
x3 = MaxPooling1D(2)(x2)
flat = Flatten()(x3)
encoded = Dense(32,activation = 'relu')(flat)
#encoded = Reshape((32,1))(encoded)
print("shape of encoded {}".format(K.int_shape(encoded)))
# DECODER
x2_ = Conv1D(32, 3, activation='relu', padding='valid')(x3)
x1_ = UpSampling1D(2)(x2_)
x_ = Conv1D(64, 3, activation='relu', padding='valid')(x1_)
upsamp = UpSampling1D(2)(x_)
flat = Flatten()(upsamp)
decoded = Dense(1389,activation = 'relu')(flat)
decoded = Reshape((1389,))(decoded)
print("shape of decoded {}".format(K.int_shape(decoded)))
autoencoder = Model(input_sig, decoded)
autoencoder.compile(optimizer='adam', loss='mse', metrics=['accuracy'])
如你所见,编码后的形状是(?, 32),解码后的形状是(?, 1389)。
我的training_data的形状是(141, 1389)。
通过执行下面的代码,
autoencoder.fit(X_train, X_train,
epochs=150,
batch_size=256,
shuffle=True,
validation_data=(X_test, X_test))
我收到错误:ValueError:检查输入时出错:预期 input_15 有 3 个维度,但得到形状为 (141, 1389)
的数组
你能帮我解决这个问题吗?
使用:
X_train = np.expand_dims(X_train, axis=2)
将您的训练数据扩展到第三个维度。
希望对您有所帮助!
我想将此代码用作自动编码器:
# ENCODER
input_sig = Input(batch_shape=(None,1389,1))
x = Conv1D(64,3, activation='relu', padding='valid')(input_sig)
x1 = MaxPooling1D(2)(x)
x2 = Conv1D(32,3, activation='relu', padding='valid')(x1)
x3 = MaxPooling1D(2)(x2)
flat = Flatten()(x3)
encoded = Dense(32,activation = 'relu')(flat)
#encoded = Reshape((32,1))(encoded)
print("shape of encoded {}".format(K.int_shape(encoded)))
# DECODER
x2_ = Conv1D(32, 3, activation='relu', padding='valid')(x3)
x1_ = UpSampling1D(2)(x2_)
x_ = Conv1D(64, 3, activation='relu', padding='valid')(x1_)
upsamp = UpSampling1D(2)(x_)
flat = Flatten()(upsamp)
decoded = Dense(1389,activation = 'relu')(flat)
decoded = Reshape((1389,))(decoded)
print("shape of decoded {}".format(K.int_shape(decoded)))
autoencoder = Model(input_sig, decoded)
autoencoder.compile(optimizer='adam', loss='mse', metrics=['accuracy'])
如你所见,编码后的形状是(?, 32),解码后的形状是(?, 1389)。
我的training_data的形状是(141, 1389)。
通过执行下面的代码,
autoencoder.fit(X_train, X_train,
epochs=150,
batch_size=256,
shuffle=True,
validation_data=(X_test, X_test))
我收到错误:ValueError:检查输入时出错:预期 input_15 有 3 个维度,但得到形状为 (141, 1389)
的数组你能帮我解决这个问题吗?
使用:
X_train = np.expand_dims(X_train, axis=2)
将您的训练数据扩展到第三个维度。
希望对您有所帮助!