如何解决进行预测Tensorflow / keras时,““复杂警告:将复杂值转换为实数会丢弃虚部”
我有这个模型:
def get_model():
model = Sequential()
model.add(Conv2D(32,kernel_size=(2,2),strides=(2,padding="valid",input_shape=(20,101,1)))
model.add(LeakyReLU(alpha=0.3))
model.add(Conv2D(64,padding="valid"))
model.add(LeakyReLU(alpha=0.3))
model.add(Flatten())
model.add(Dense(100))
model.add(LeakyReLU(alpha=0.3))
model.add(Dense(100))
model.add(LeakyReLU(alpha=0.3))
model.add(Dense(20,activation='linear'))
#plot_model(model,to_file='model.png',show_shapes=True,show_layer_names=True)
model.summary()
model.compile(optimizer='adam',loss="mean_squared_error",metrics=["mean_squared_error"])
return model
CNN = get_model()
history = CNN.fit(rst_src_train,ls_filters_train,epochs=100)
def test():
test_set = sio.loadmat('test_rst.mat')
test_set = np.array(test_set['Z1'])
test_set = np.expand_dims(test_set,axis=(0,3))
y_hat = CNN.predict(test_set)
savemat('y_hat.mat',dict(y_hat=y_hat))
test()
其中训练集的形状为(80,20,1),训练标签的形状为(80,20)。 这两个训练集/标签都是复数值,我想获得复数值作为形状的预测(20,1),但是当我运行test()函数时,我得到了这个错误:
ComplexWarning: Casting complex values to real discards the imaginary part return
ops.EagerTensor(value,ctx.device_name,dtype)
所以我得到一个(20,1)向量,它只有实数部分。
如何解决此问题?我读过也许均方误差不适合复杂数据,所以也许我也应该更改损失函数?又如何?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。