我想做这样的事情:
link: function ($scope, element, attrs, ngModel) {
ngModel.$validators.maxDate = function (value, max) {
if (!!value && (value.length ==10 ) )
{
if ( new Date(max) > new Date(attrs.maxDate))
{
console.log("Date is Higher");
}
}
};
}
但是,我收到以下错误:
height = tf.cast(features['height'],tf.int32)
width = tf.cast(features['width'],tf.int32)
image.set_shape(tf.pack([height,width,3]))
有人能指出我正确的方向吗?谢谢。
答案 0 :(得分:4)
您无法将tf.Tensor
传递给Tensor.set_shape()
。使用从TFRecord读取的值作为set_shape()
的参数的唯一方法是对其进行评估(例如,使用sess.run()
)并将生成的NumPy数组传递给set_shape()
。
这种限制的原因有点微妙。 Tensor.set_shape()
用于对特定Tensor
(即符号值)可以容纳的所有值的形状进行断言。特别是,当程序员比库可以推断出更多地了解该数据时,它用于填充形状推断留下的空白。但是,这些断言只能使用图形构建时可用的信息。动态变化的形状使用特殊值Dimension(None)
(对于未知维度)和TensorShape(None)
(对于未知等级的张量)来表示。
整个TensorFlow的意图是大多数操作应该能够在没有静态已知形状的情况下工作,因此可以使用动态变化形状的张量。但是,image processing ops used for cropping/padding中有一些例外:
tf.image.crop_to_bounding_box()
tf.image.pad_to_bounding_box()
tf.image.resize_image_with_crop_or_pad()
这三个操作要求形状是静态的。但是,它们只是围绕tf.pad()
和tf.slice()
的便利包装器,它们利用静态形状来避免在每个步骤中进行不必要的计算。我们一直在慢慢地从图像操作中删除这种依赖关系,但随意提出一个GitHub问题。与此同时,您可以直接使用较低级别的操作来解决动态张量缺乏形状推断问题。