Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python {TypeError}不可损坏类型:';numpy.ndarray和#x27;_Python_Tensorflow - Fatal编程技术网

Python {TypeError}不可损坏类型:';numpy.ndarray和#x27;

Python {TypeError}不可损坏类型:';numpy.ndarray和#x27;,python,tensorflow,Python,Tensorflow,我使用tensorflow构建模型,并希望对其进行训练,但我得到了以下错误: {TypeError}不可损坏的类型:'numpy.ndarray' 我的代码的一部分如下: with tf.Session() as sess: init = tf.global_variables_initializer() sess.run(init) for epoch in range(a.epochs): input, target = load_batch_data

我使用tensorflow构建模型,并希望对其进行训练,但我得到了以下错误:

{TypeError}不可损坏的类型:
'numpy.ndarray'

我的代码的一部分如下:

with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    for epoch in range(a.epochs):
        input, target = load_batch_data(batch_size=16, a=a)
        batch_input = input.astype(np.float32)
        batch_target = target.astype(np.float32)
        sess.run(predict_real, feed_dict={input: batch_input, target: batch_target})
'predict\u real'
是我的模型的输出,我只是试着运行它,但是出错了

以下是我的模型的代码:

def build_model(input, target):
    with tf.variable_scope("generator"):
      out_channels = int(target.get_shape()[-1])
      outputs = create_generator(input, out_channels)


    with tf.name_scope("real_discriminator"):
        with tf.variable_scope("discriminator"):
           predict_real = create_discriminator(input, target)

    with tf.name_scope("fake_discriminator"):
         with tf.variable_scope("discriminator", reuse=True):
           predict_fake = create_discriminator(input, outputs)

    with tf.name_scope("discriminator_loss"):
         discrim_loss = tf.reduce_mean(-(tf.log(predict_real + EPS) + tf.log(1 - predict_fake + EPS)))

    with tf.name_scope("generator_loss"):
       gen_loss_GAN = tf.reduce_mean(-tf.log(predict_fake + EPS))
       gen_loss_L1 = tf.reduce_mean(tf.abs(target - outputs))
       gen_loss = gen_loss_GAN * a.gan_weight + gen_loss_L1 * a.l1_weight

    with tf.name_scope("discriminator_train"):
       discrim_tvars = [var for var in tf.trainable_variables() if var.name.startswith("discriminator")]
       discrim_optim = tf.train.AdamOptimizer(a.lr, a.beta1)
       discrim_grads_and_vars = discrim_optim.compute_gradients(discrim_loss, var_list=discrim_tvars)
       discrim_train = discrim_optim.apply_gradients(discrim_grads_and_vars)

    with tf.name_scope("generator_train"):
        with tf.control_dependencies([discrim_train]):
            gen_tvars = [var for var in tf.trainable_variables() if var.name.startswith("generator")]
            gen_optim = tf.train.AdamOptimizer(a.lr, a.beta1)
            gen_grads_and_vars = gen_optim.compute_gradients(gen_loss, var_list=gen_tvars)
            gen_train = gen_optim.apply_gradients(gen_grads_and_vars)

    ema = tf.train.ExponentialMovingAverage(decay=0.99)
    update_losses = ema.apply([discrim_loss, gen_loss_GAN, gen_loss_L1])

    global_step = tf.train.get_or_create_global_step()
    incr_global_step = tf.assign(global_step, global_step+1)
    return Model(
      predict_real=predict_real,
      predict_fake=predict_fake,
      discrim_loss=ema.average(discrim_loss),
      discrim_grads_and_vars=discrim_grads_and_vars,
      gen_loss_GAN=ema.average(gen_loss_GAN),
      gen_loss_L1=ema.average(gen_loss_L1),
      gen_grads_and_vars=gen_grads_and_vars,
      outputs=outputs,
      train=tf.group(update_losses, incr_global_step, gen_train),
)

来自python文档:

如果对象的哈希值永不改变,则该对象是可哈希的 在其生命周期内(它需要一个散列()方法),并且可以 与其他对象相比(它需要一个eq()方法)。散列 比较相等的对象必须具有相同的哈希值

Hashability使对象可用作字典键和集合 成员,因为这些数据结构在内部使用哈希值

Python的所有不可变内置对象都是可散列的,而 可变容器(如列表或字典)是可用的。对象 默认情况下,用户定义类的实例是可散列的;他们 所有比较都不相等,它们的哈希值是它们的id()

()

您正在尝试从ndarray创建不可散列的dict

您可以尝试使用
tuple(np.ndarray)


请注意,让你的问题更容易理解。发布您的全部代码并不是获得答案的好方法。您应该调试并找到问题所在的确切行,打印输入和输出,说出您期望的内容,而不是您得到的内容。

来自python文档:

如果对象的哈希值永不改变,则该对象是可哈希的 在其生命周期内(它需要一个散列()方法),并且可以 与其他对象相比(它需要一个eq()方法)。散列 比较相等的对象必须具有相同的哈希值

Hashability使对象可用作字典键和集合 成员,因为这些数据结构在内部使用哈希值

Python的所有不可变内置对象都是可散列的,而 可变容器(如列表或字典)是可用的。对象 默认情况下,用户定义类的实例是可散列的;他们 所有比较都不相等,它们的哈希值是它们的id()

()

您正在尝试从ndarray创建不可散列的dict

您可以尝试使用
tuple(np.ndarray)


请注意,让你的问题更容易理解。发布您的全部代码并不是获得答案的好方法。您应该调试并找到问题所在的准确行,打印输入、输出并说出您期望的内容,而不是您得到的内容。

从出现此错误的问题或答案中不容易理解。谢谢,这解决了我的问题,因为我试图以错误的方式输入词典。从出现此错误的问题或答案不容易理解。谢谢,这解决了我的问题,因为我试图以错误的方式输入词典