Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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

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 Can';t将随机变量传递给Tensorflow中的tf.image.central_crop()_Python_Tensorflow - Fatal编程技术网

Python Can';t将随机变量传递给Tensorflow中的tf.image.central_crop()

Python Can';t将随机变量传递给Tensorflow中的tf.image.central_crop(),python,tensorflow,Python,Tensorflow,在Tensorflow中,我通过一组PNG文件进行培训,我希望应用数据扩充。我已经成功地使用了tf.image.random\u flip\u left\u right() 但是,当我尝试使用tf.image.central\u crop()时,出现了一个错误。 基本上,我希望从均匀分布(0.8,1.0)中提取中心_分数 这是我的代码。我哪里出错了?frac应该是tf.random\u uniform() 失败并出现错误: TypeError: Fetch argument 0.98321540

在Tensorflow中,我通过一组PNG文件进行培训,我希望应用数据扩充。我已经成功地使用了
tf.image.random\u flip\u left\u right()

但是,当我尝试使用
tf.image.central\u crop()
时,出现了一个错误。 基本上,我希望从均匀分布(0.8,1.0)中提取中心_分数

这是我的代码。我哪里出错了?
frac
应该是
tf.random\u uniform()

失败并出现错误:

TypeError: Fetch argument 0.9832154064713503 has invalid type <class 'float'>, must be a string or Tensor. (Can not convert a float into a Tensor or Operation.)
TypeError:获取参数0.9832154064713503的类型无效,必须是字符串或张量。(无法将浮点转换为张量或操作。)

我解决了自己定义以下函数的问题。我调整了tf.image.central\u crop(image,central\u fraction)中提供的代码。 函数RandomCrop将裁剪从均匀分布中提取的中心分数的图像。您只需指定所需的最小分数和最大分数。 显然,你可以把随机均匀分布换成另一个

def RandomCrop(image,fMin, fMax):
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import array_ops
  from tensorflow.python.framework import ops
  image = ops.convert_to_tensor(image, name='image')

  if fMin <= 0.0 or fMin > 1.0:
    raise ValueError('fMin must be within (0, 1]')
  if fMax <= 0.0 or fMax > 1.0:
    raise ValueError('fMin must be within (0, 1]')

  img_shape = array_ops.shape(image)
  depth = image.get_shape()[2]
  my_frac2 = tf.random_uniform([1], minval=fMin, maxval=fMax, dtype=tf.float32, seed=42, name="uniform_dist") 
  fraction_offset = tf.cast(math_ops.div(1.0 , math_ops.div(math_ops.sub(1.0,my_frac2[0]), 2.0)),tf.int32)
  bbox_h_start = math_ops.div(img_shape[0], fraction_offset)
  bbox_w_start = math_ops.div(img_shape[1], fraction_offset)
  bbox_h_size = img_shape[0] - bbox_h_start * 2
  bbox_w_size = img_shape[1] - bbox_w_start * 2

  bbox_begin = array_ops.pack([bbox_h_start, bbox_w_start, 0])
  bbox_size = array_ops.pack([bbox_h_size, bbox_w_size, -1])
  image = array_ops.slice(image, bbox_begin, bbox_size)

  # The first two dimensions are dynamic and unknown.
  image.set_shape([None, None, depth])
  return(image)
def随机裁剪(图像、fMin、fMax):
从tensorflow.python.ops导入数学运算
从tensorflow.python.ops导入数组
从tensorflow.python.framework导入ops
image=ops.convert_to_tensor(image,name='image')
如果fMin 1.0:
raise VALUETERROR('fMin必须在(0,1)范围内')
如果fMax 1.0:
raise VALUETERROR('fMin必须在(0,1)范围内')
img\u shape=数组操作形状(图像)
深度=图像。获取形状()[2]
my_frac2=tf.random_uniform([1],minval=fMin,maxval=fMax,dtype=tf.float32,seed=42,name=“uniform_dist”)
分数偏移=tf.cast(数学运算div(1.0,数学运算div(1.0,my_frac2[0]),2.0)),tf.int32)
bbox\u h\u start=数学运算div(img\u形状[0],分数偏移)
bbox\u w\u start=数学运算div(img\u形状[1],分数偏移)
bbox_h_大小=img_形状[0]-bbox_h_开始*2
bbox_w_size=img_形状[1]-bbox_w_开始*2
bbox\u begin=array\u ops.pack([bbox\u h\u start,bbox\u w\u start,0])
bbox\u size=array\u ops.pack([bbox\u h\u size,bbox\u w\u size,-1])
image=array\u ops.slice(image,bbox\u begin,bbox\u size)
#前两个维度是动态的和未知的。
image.set_形状([None,None,depth])
返回(图像)

我尝试在v0.10上运行您的脚本,但没有遇到任何问题。请您提及您正在使用的TF版本
import tensorlow as TF;print TF.\uu git\u version\uuuuu
?另外,在数据中提供指向某些png的链接可能会有所帮助。对于TF版本:对于TF版本,如果我运行:python3-c“import tensorflow as TF;print”(tf.uuu version_uuuuu)“我得到:0.11.0rc0。我在Python 3.5上。下面是一个图像示例。谢谢!图像示例:
def RandomCrop(image,fMin, fMax):
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import array_ops
  from tensorflow.python.framework import ops
  image = ops.convert_to_tensor(image, name='image')

  if fMin <= 0.0 or fMin > 1.0:
    raise ValueError('fMin must be within (0, 1]')
  if fMax <= 0.0 or fMax > 1.0:
    raise ValueError('fMin must be within (0, 1]')

  img_shape = array_ops.shape(image)
  depth = image.get_shape()[2]
  my_frac2 = tf.random_uniform([1], minval=fMin, maxval=fMax, dtype=tf.float32, seed=42, name="uniform_dist") 
  fraction_offset = tf.cast(math_ops.div(1.0 , math_ops.div(math_ops.sub(1.0,my_frac2[0]), 2.0)),tf.int32)
  bbox_h_start = math_ops.div(img_shape[0], fraction_offset)
  bbox_w_start = math_ops.div(img_shape[1], fraction_offset)
  bbox_h_size = img_shape[0] - bbox_h_start * 2
  bbox_w_size = img_shape[1] - bbox_w_start * 2

  bbox_begin = array_ops.pack([bbox_h_start, bbox_w_start, 0])
  bbox_size = array_ops.pack([bbox_h_size, bbox_w_size, -1])
  image = array_ops.slice(image, bbox_begin, bbox_size)

  # The first two dimensions are dynamic and unknown.
  image.set_shape([None, None, depth])
  return(image)