Я пытаюсь создать Генеративную Состязательную Сеть, но я не могу соответствовать модели генератора. Я использую модель 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!