Python {TypeError}不可损坏类型:';numpy.ndarray和#x27;
我使用tensorflow构建模型,并希望对其进行训练,但我得到了以下错误: {TypeError}不可损坏的类型: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
'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)
请注意,让你的问题更容易理解。发布您的全部代码并不是获得答案的好方法。您应该调试并找到问题所在的准确行,打印输入、输出并说出您期望的内容,而不是您得到的内容。从出现此错误的问题或答案中不容易理解。谢谢,这解决了我的问题,因为我试图以错误的方式输入词典。从出现此错误的问题或答案不容易理解。谢谢,这解决了我的问题,因为我试图以错误的方式输入词典