Python GAN实现uValueError:设置具有序列的数组元素

Python GAN实现uValueError:设置具有序列的数组元素,python,numpy,tensorflow,neural-network,Python,Numpy,Tensorflow,Neural Network,我正在实现一个简单的2层GAN(生成性对抗网络),但我有一个实现问题。我得到一个值错误(ValueError:设置一个数组元素和一个序列)。看看其他有相同错误的问题,我认为问题在于在session.run()中使用提要时numpy ndarray和Tensorflow tensor之间的类型问题。然而,我真的不明白为什么我的会导致这个错误。我尝试过转换张量->ndarray,反之亦然,但这些方法似乎都不起作用。错误消息指向行Z:np.random.uniform(-1,1,size=[mini_

我正在实现一个简单的2层GAN(生成性对抗网络),但我有一个实现问题。我得到一个值错误(ValueError:设置一个数组元素和一个序列)。看看其他有相同错误的问题,我认为问题在于在session.run()中使用提要时numpy ndarray和Tensorflow tensor之间的类型问题。然而,我真的不明白为什么我的会导致这个错误。我尝试过转换张量->ndarray,反之亦然,但这些方法似乎都不起作用。错误消息指向行
Z:np.random.uniform(-1,1,size=[mini_batch,Z_dim])
(在最后一个代码块中)


我正在训练生成器生成虚假推文。

Z似乎还可以,那么X呢,你检查过它们的尺寸了吗?我想是的。X是一个带有形状的占位符(None,20),fake_tweets是一个形状的数组(128,20)。X=tf.placeholder(tf.float32,shape=[None,num\u words\u in\u tweet])。这可能是X和伪_推文之间的类型问题吗?如果是,我如何修复它?我试过tf.convert_to_tensor(假的tweets),但它不能解决这个问题。假的tweets不是float吗?。这是一根绳子?。然后,您需要创建一个字典,将字符串映射到一个数字,然后将其传递到您的网络。fake_tweets是一个具有形状(128,20)的数据数组,而不是一个字符串。float?类型的数据数组?。如果没有,则使用astype()将其强制转换为float
mini_batch = 128
Z_dim = 100

Z = tf.placeholder(tf.float32, shape=[None, 100])
def generator(z):
    G_h1 = tf.nn.relu(tf.matmul(z, G_W1) + G_b1)
    G_log_prob = tf.matmul(G_h1, G_W2) + G_b2
    G_prob = tf.nn.sigmoid(G_log_prob)
    return G_prob

def discriminator(x):
    D_h1 = tf.nn.relu(tf.matmul(x, D_W1) + D_b1)
    D_logit = tf.matmul(D_h1, D_W2) + D_b2
    D_prob = tf.nn.sigmoid(D_logit)
    return D_prob, D_logit
    G_sample = generator(Z)
    D_real, D_logit_real = discriminator(X)
    D_fake, D_logit_fake = discriminator(G_sample)

    D_loss = -tf.reduce_mean(tf.log(D_real) + tf.log(1.0 - D_fake))
    G_loss = -tf.reduce_mean(tf.log(D_fake))

    D_solver = tf.train.AdamOptimizer(learning_rate).minimize(D_loss, var_list=theta_D)
        _, D_loss_curr = sess.run([D_solver, D_loss], feed_dict={
    X: fake_tweets, 
    Z: np.random.uniform(-1., 1., size=[mini_batch, Z_dim])
    })