版权声明:转载注明出处 https://blog.csdn.net/york1996/article/details/82697494
首先是效果图:
由于是DCGAN生成器模型,需要多次反卷积操作使feature变成一个给定的大小,所以要把最后的大小凑出来,虽然计算公式十分简单:(这里假设feature,kernel,input,output都是方形的,padding也是对称的)
output=stride(input-1)+kernel_size-2*padding
但是,由于是要凑数的,所以如果要不断的用笔算还是稍微复杂的。那么用程序来简单的计算,改变其中一个值,就能知道最终的输出结果。这样凑数就方便多了。另外如果是命令行形式的输入,也是挺复杂的,用GUI界面实现是个不错的选择,所以这里就采用了PyQt5来实现。以下是所有的代码,保证import到的模块都存在就可以正常运行了:
from PyQt5.QtWidgets import QWidget,QApplication,QPushButton,QLabel,QMainWindow,QTextEdit
from PyQt5.QtGui import QFont
import sys
class mainForm(QMainWindow):
def __init__(self):
super(mainForm, self).__init__()
self.initUI()
self.show()
def initUI(self):
font=QFont()
font.setPixelSize(20)
self.setWindowTitle("计算反卷积操作的输出(默认都是方形的)")
self.setGeometry(0,0,600,160)
self.label_input_size=QLabel("feature",self)
self.label_input_size.move(60,80)
self.label_input_size.setFont(font)
self.label_input_size.setFixedHeight(35)
self.label_kernel_size=QLabel("kernel",self)
self.label_kernel_size.move(160,80)
self.label_kernel_size.setFont(font)
self.label_kernel_size.setFixedHeight(35)
self.label_stride_size=QLabel("stride",self)
self.label_stride_size.move(260,80)
self.label_stride_size.setFont(font)
self.label_stride_size.setFixedHeight(35)
self.label_padding_size=QLabel("padding",self)
self.label_padding_size.move(360,80)
self.label_padding_size.setFont(font)
self.label_padding_size.setFixedHeight(35)
self.text_input=QTextEdit(self)
self.text_input.move(50,50)
self.text_input.setFixedHeight(35)
self.text_input.setFont(font)
self.text_kernel=QTextEdit(self)
self.text_kernel.move(150,50)
self.text_kernel.setFont(font)
self.text_kernel.setFixedHeight(35)
self.text_stride=QTextEdit(self)
self.text_stride.move(250,50)
self.text_stride.setFont(font)
self.text_stride.setFixedHeight(35)
self.text_padding=QTextEdit(self)
self.text_padding.move(350,50)
self.text_padding.setFixedHeight(35)
self.text_padding.setFont(font)
self.button_cal=QPushButton("计算",self)
self.button_cal.move(450,50)
self.button_cal.setFont(font)
self.button_cal.setFixedHeight(35)
self.button_cal.clicked.connect(self.cal)
def cal(self):
i=int(self.text_input.toPlainText())
k=int(self.text_kernel.toPlainText())
s=int(self.text_stride.toPlainText())
p=int(self.text_padding.toPlainText())
out=s*(i-1)+k-2*p
self.setWindowTitle(str(out))
app=QApplication(sys.argv)
f=mainForm()
sys.exit(app.exec())
反卷积,工具tool