【发布时间】:2019-12-29 22:47:44
【问题描述】:
在处理时间序列数据时,我尝试使用 Conv1D 构建我的第一个 CNN。我的目标是对 1501 形状的 input_data 进行压缩。 x_train 形状是 (550, 1501),我增加了它的尺寸以适应模型。
但是,编译器抱怨:
ValueError: 形状为 (550, 1501, 1) 的目标数组被传递为形状为 (None, 1500, 1) 的输出,同时用作损失
mean_squared_error。这种损失期望目标具有与输出相同的形状。
这是代码
import numpy as np
from tensorflow.keras.layers import Input,Dense, Conv1D, MaxPooling1D, UpSampling1D, Flatten, Input
from tensorflow.keras import optimizers, Model
import matplotlib.pyplot as plt
from tensorflow.keras import backend as K
#(1,128,1)
input_data = Input(shape=(1501,1))
fil_ord = 3
# Eecode
encode = Conv1D(2000, fil_ord, activation='relu', padding='same')input_data)
encode = MaxPooling1D( 2 )(encode)
encode = Conv1D(750, fil_ord, activation='relu', padding='same')(encode)
# Decode
decode = Conv1D(750, fil_ord, activation='relu', padding='same')(encode)
decode = UpSampling1D( 2)(decode)
decode = Conv1D(1, fil_ord, activation='sigmoid', padding='same')(decode)
model = Model(input_data, decode)
model.summary()
from numpy import zeros, newaxis
x_train1=x_train[:,:,None]
batch_size = 128
epochs = 10
# Optimizer
sgd = optimizers.Adam(lr=0.001)
# compile
model.compile(loss='mse', optimizer=sgd)
# train
history = model.fit(x_train1, x_train1, batch_size=batch_size, epochs=epochs, verbose=2,shuffle=True)
model.summary() 输出:
【问题讨论】:
标签: python tensorflow keras conv-neural-network convolution