这是我的 GAN 代码,其中模型正在初始化,一切正常,这里只有问题的相关代码:
z = Input(shape=(100+384,))
img = self.generator(z)
print("before: ",img) #128x128x3 shape, dtype=tf.float32
temp = tf.get_variable("temp", [1, 128, 3],dtype=tf.float32)
img=tf.concat(img,temp)
print("after: ",img) #error ValueError: Incompatible type conversion requested to type 'int32' for variable of type 'float32_ref'
valid = self.discriminator(img)
self.combined = Model(z, valid)
我要生成 128x128x3 图像,我想做的是给鉴别器提供 129x128x3 图像,并且在训练时将 1x128x3 文本嵌入矩阵与图像连接。但是我必须在开始时指定每个模型(即 GEN 和 DISC)将获得的张量和输入值的形状。Gen 采用 100noise+384 嵌入矩阵并生成 128x128x3 图像,该图像再次通过一些嵌入(即 1x128x3)嵌入并馈送到 DISC。所以我的问题是,这种方法是否正确?另外,如果它是正确的或有意义的,那么我如何在开始时具体说明所需的东西,这样它就不会给我诸如形状不兼容之类的错误,因为在开始时我必须添加这些行:-
z = Input(shape=(100+384,))
img = self.generator(z) #128x128x3
valid = self.discriminator(img) #should be 129x128x3
self.combined = Model(z, valid)
但是 img 是 128x128x3 并且后来在训练期间通过连接嵌入矩阵更改为 129x128x3。那么如何通过填充或附加另一个张量或简单地重塑这当然是不可能的,将上述代码中的“img”从 128,128,3 更改为 129,128,3。任何帮助将不胜感激。谢谢。