“TypeError:无法为非浮点类型创建初始值设定项。”当使用VFG19模型的tf-slim提取功能时

时间:2017-08-07 19:07:49

标签: tensorflow deep-learning tf-slim

我想从vgg19中提取pool5层的功能。我正在使用tf-slim库。我得到一个非常奇怪的错误

TypeError: Cannot create initializer for non-floating point type.

我的图片是dtype = uint8的ndarrays。因此,为了解决此错误,我使用tf.to_float(images)将图像更改为浮动。但现在它抱怨我的gpu内存不足,这非常奇怪。因为我有一个带有11gb vram的nvidia GeForce GTX 1080 Ti,并且没有运行其他进程。批量大小只有2000张图片。在切换到tf-slim之前我使用了caffe,这个批量大小根本不是问题。 我的代码就像:

                with slim.arg_scope(vgg.vgg_arg_scope()):
                _, end_points = vgg.vgg_19(tf.to_float(images), num_classes=1000,is_training=False)
            init_fn = slim.assign_from_checkpoint_fn(
                os.path.join(checkpoints_dir, 'vgg_19.ckpt'),
                slim.get_model_variables('vgg_19'))
            features = end_points['vgg_19/pool5']

正如您在上面看到的那样,我只是尝试从预训练的权重中提取pool5层的特征。那么这里的问题是什么?转换浮动有问题吗?正如我之前所说的,我使用了caffe,我甚至可以从20,000个图像中提取特征,这里只有2000个。特别是错误说:

ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[2000,224,224,64]
 [[Node: vgg_19/conv1/conv1_1/convolution = Conv2D[T=DT_FLOAT, data_format="NHWC", padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/gpu:0"](ToFloat, vgg_19/conv1/conv1_1/weights/read)]]
 [[Node: vgg_19/pool5/MaxPool/_77 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_154_vgg_19/pool5/MaxPool", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]

注意:图像变量的形状是[2000,224,224,3]

由于

0 个答案:

没有答案