CNN 的什么架构来解决图像回归问题(案例研究:求解泊松方程)?

问题描述 投票:0回答:0

我一直在研究使用CNN模型解决Poisson问题(如果你不熟悉可以忽略Poisson问题部分并跳到图像处理/CNN部分)。更具体地说,我正在通过 CNN 算法解决电势问题 Φ (phi),粒子分布 ρ (rho) 作为笛卡尔坐标系中的输入,类似于 this,但没有介电常数。

训练输入 ρ (rho) 是 20x20 像素矩阵,数据标签 Φ (phi) 也是 20x20 矩阵。输入和标签都包含 5000 个矩阵(5000、20、20、1)。 input-label数据集是通过Gauss-Seidel方法得到的。

目标是用CNN模型从输入数据粒子分布ρ(rho)中得到电势Φ(phi)

对于这个回归案例,如何使用最好的 CNN 架构?

我试过使用带有 Tensorflow 的 CNN 架构的简单算法,没有最大池化层(以保持准确性)并在输出层使用线性激活函数\

x_train = x_train.reshape(1000, 20, 20, 1)
y_train = x_train.reshape(1000, 20, 20, 1)

x_test = x_test.reshape(1000, 20, 20, 1)
y_test = y_test.reshape(1000, 20, 20, 1)

model = Sequential([
    Conv2D(32, (3,3), activation='relu', input_shape=(20,20,1)),
    Conv2D(64, (5,5), activation='relu'), 
    Conv2D(64, (3,3), activation='relu'),

    Flatten(),
    Dense(64, activation='relu'),
    Dense(1, activation='relu')
])

model.summary()

model summary 1

model.compile(loss = 'mse', optimizer = 'adam')
model.summary()

model summary 2

model.fit(x_train, y_train, epochs=10)

并返回错误:

InvalidArgumentError: Graph execution error:

Detected at node 'gradient_tape/mean_squared_error/BroadcastGradientArgs' defined at (most recent call last):
    File "", line 198, in _run_module_as_main
...
    File "c:\Users\acer\AppData\Local\Programs\Python\Python311\Lib\site-packages\keras\optimizers\optimizer.py", line 275, in compute_gradients
      grads = tape.gradient(loss, var_list)
Node: 'gradient_tape/mean_squared_error/BroadcastGradientArgs'
Incompatible shapes: [32,1] vs. [32,20,20,1]
     [[{{node gradient_tape/mean_squared_error/BroadcastGradientArgs}}]] [Op:__inference_train_function_19666]
machine-learning image-processing conv-neural-network poisson
© www.soinside.com 2019 - 2024. All rights reserved.