TypeError:传递给参数'input'的值具有DataType float64不在允许值列表中:float16,bfloat16,float32

时间:2018-03-22 02:47:19

标签: python tensorflow deep-learning image-segmentation

我读过许多类似于我的问题,但所有这些问题与我的不同。

for itr in xrange(MAX_ITERATION):
            train_images, train_annotations = train_dataset_reader.next_batch(batch_size)

#            train_images=tf.image.convert_image_dtype(train_images,np.float32) 
#            train_annotations=tf.image.convert_image_dtype(train_annotations,np.float32) 
#            print(train_images_.get_shape(),train_annotations_.get_shape())
#            train_images=tf.cast(train_images,tf.float32)   
#            train_images = tf.to_float(train_images)
#            train_annotations = tf.to_float(train_annotations)
            #train_images, train_annotations = py_func(selftrans, [train_images_, train_annotations_], [tf.float32], grad=None)
            print(train_images.dtype)
#            train_annotations=tf.cast(train_annotations,tf.float32)
#            train_images,train_annotations = sess.run([train_images,train_annotations])
#            train_images = train_images.astype('float32')
#            train_annotations = train_annotations.astype('float32')
#            print(train_annotations.dtype)
            feed_dict = {image: train_images, annotation: train_annotations, keep_probability: 1}

            sess.run(train_op, feed_dict=feed_dict)

问题是:在我使用自己的数据(血管分割,这是两个分类问题)后,使用next_batch读取的数据是float64,而feed_dict()需要float32。通常,像tf.cast or tf.tp_float这样的代码可用于将我的数据转换为float32。但是,在使用这些转换代码后,我发现错误已更改为 TypeError:Feed的值不能是tf.Tensor对象。可接受的Feed值包括Python标量,字符串,列表,numpy ndarrays或TensorHandles。 最后,我尝试使用sess.run来设置其tf.Tensor表单。 Erorr更改为原始数据,这意味着我的数据已转换回float64。 因此,它似乎是一个无限循环。“没有转换,float64将不被接受。转换后,Tf。Tensor也将不被接受。使用sess抵消tf.Tensor表格运行,数据将同时转换回float64“我该如何解决这个问题?我期待着你的回复!类似的问题就在这里, TensorFlow TypeError: Value passed to parameter input has DataType uint8 not in list of allowed values: float16, float32

1 个答案:

答案 0 :(得分:0)

我认为这是由我的配置环境引起的。按照说明(enter link description here)安装我的环境后,代码变得可行。