【发布时间】:2019-11-15 23:38:55
【问题描述】:
我正在尝试创建一个生成对抗网络,但我无法拟合生成器模型。我使用只有 Dense 层的 Sequential() 模型,首先使用 input_shape=(1,),最后使用 imgsize[0] * imgsize[1] * 3 输出空间。 imgsize = (28, 28) 所以输出空间有 2352 个单位。
我需要适应“实际成本”和“以前的图像”,但是当我尝试适应以前预测的输出时,会出现错误。
ValueError: 检查目标时出错:预期 GenDense5 的形状为 (1,) 但得到的数组的形状为 (2352,)
generator = keras.Sequential([
keras.layers.Dense(1, input_shape=(1,), activation=tf.nn.sigmoid, name="GenDenseIn"),
keras.layers.Dense(8, activation=tf.nn.softmax, name="GenDense2"),
keras.layers.Dense(64, activation=tf.nn.relu, name="GenDense3"),
keras.layers.Dense(256, activation=tf.nn.softmax, name="GenDense4"),
keras.layers.Dense(imgsize[0] * imgsize[1] * 3, activation=tf.nn.sigmoid, name="GenDense5")
])
generator.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
gen = generator.predict(np.array([1])) # 1 to find the best
img = gen.reshape((1, imgsize[0], imgsize[1], 3))
res = discriminator.predict(img) # Dicriminator evaluate real or fake value
cost = res[0][0] # Real value
model.fit(np.array([cost]), np.array(gen), epochs=100) #ERROR!
【问题讨论】:
-
您可以尝试创建一个变量来保存 imgsize[0] * imgsize[1] * 3 值,然后将该变量放入最终的密集层吗?
-
没用,但是谢谢。