这是一件简单的事情,我无法弄清楚该怎么做.
我使用https://github.com/ethereon/caffe-tensorflow中的github代码将预先训练好的VGG caffe模型转换为tensorflow ,并将其保存到vgg16.npy ...
然后我使用以下命令将网络加载到我的sess默认会话"net":
images = tf.placeholder(tf.float32, [1, 224, 224, 3])
net = VGGNet_xavier({'data': images, 'label' : 1})
with tf.Session() as sess:
net.load("vgg16.npy", sess)
Run Code Online (Sandbox Code Playgroud)
在net.load之后,我得到一张包含张量列表的图表.我可以用net.layers ["conv1_1"] ...让重量和偏见的第一VGG卷积层等每层访问单个张量
现在假设我创建另一个图形,其第一层为"h_conv1_b":
W_conv1_b = weight_variable([3,3,3,64])
b_conv1_b = bias_variable([64])
h_conv1_b = tf.nn.relu(conv2d(im_batch, W_conv1_b) + b_conv1_b)
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 如何将net.layers ['conv1_1']中的预训练权重分配给h_conv1_b?(现在都是张量)
我有两个命名范围用于CNN的单独子图(使用tf.variable_scope).我可以将两个范围合并为一个,以便我的优化器仅更新两个范围中的变量吗?
我有一个简单的问题是tf.py_func功能.
我有一个my_img形状张量的形状(1,224,224,3).为了测试py_func,我将张量提供给python函数return_tf,该函数应该返回相同的张量(根据文档转换为numpy数组之后).
这是代码:
def return_tf(x):
return np.array(x)
test = tf.py_func(return_tf,[my_img],[tf.float32])
Run Code Online (Sandbox Code Playgroud)
但当我检查返回张量的形状时test,我得到:
tf.Tensor 'PyFunc:0' shape=unknown dtype=float32
Run Code Online (Sandbox Code Playgroud)
我也无法eval()在张量上运行,因为我收到了错误:
AttributeError: 'list' object has no attribute 'eval'.
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何修复由张量返回的张量形状tf.py_func?
在 Caffe 中,其 SoftmaxWithLoss 函数有一个选项可以在计算概率时忽略所有负标签 (-1),以便只有 0 或正标签概率加起来为 1。
Tensorflow softmax loss 是否有类似的功能?
我在tensorflow层的几个标准操作中已经看到(例如https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/maxpooling_op_gpu.cu.cc),代码CUDA_1D_KERNEL_LOOP(index,nthreads)作为前进和后退通行证的一部分...
我认为此处的“索引”以某种方式与底部要素地图的坐标有关,但不确定其确切含义...有谁可以帮助您?