小编Pan*_* Li的帖子

张量流中优化器的"apply_gradients"和"最小化"之间的区别

我感到困惑之间的差异apply_gradients,并minimize在tensorflow优化的.例如,

optimizer = tf.train.AdamOptimizer(1e-3)
grads_and_vars = optimizer.compute_gradients(cnn.loss)
train_op = optimizer.apply_gradients(grads_and_vars, global_step=global_step)
Run Code Online (Sandbox Code Playgroud)

optimizer = tf.train.AdamOptimizer(1e-3)
train_op = optimizer.minimize(cnn.loss, global_step=global_step)
Run Code Online (Sandbox Code Playgroud)

他们确实一样吗?

如果我想降低学习率,我可以使用以下代码吗?

global_step = tf.Variable(0, name="global_step", trainable=False)
starter_learning_rate = 1e-3
learning_rate = tf.train.exponential_decay(starter_learning_rate, global_step,
                                       100, FLAGS.decay_rate, staircase=True)
# Passing global_step to minimize() will increment it at each step.
learning_step = (
    optimizer = tf.train.AdamOptimizer(learning_rate)
    grads_and_vars = optimizer.compute_gradients(cnn.loss)
    train_op = optimizer.apply_gradients(grads_and_vars, global_step=global_step)
)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

tensorflow

28
推荐指数
2
解决办法
8536
查看次数

pyenv:BUILD FAILED(使用python-build 20160509的Ubuntu 15.04)

我已经在我的系统上安装了pyenv,命令运行pyenv install --list良好.但是当我使用下载一些Python版本时pyenv install 2.7.11,结果如下:

Downloading Python-2.7.11.tgz...
-> https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
error: failed to download Python-2.7.11.tar.gz

BUILD FAILED (Ubuntu 15.04 using python-build 20160509)
Run Code Online (Sandbox Code Playgroud)

我没有在官方的Common build问题上发现任何类似的问题.

pyenv不是没有赶上新的Ubuntu更新?

python ubuntu pyenv

8
推荐指数
1
解决办法
6379
查看次数

如何在python3中安装COCO PythonAPI

似乎COCO PythonAPI只支持 python2。但是人们确实在 python3 环境中使用它。

我尝试了可能的安装方法,例如

python3 setup.py build_ext --inplace
python3 setup.py install
Run Code Online (Sandbox Code Playgroud)

python3 setup.py install会因失败coco.pycocoeval.pycontainning python2打印功能。

更新:通过更新COCO PythonAPI项目解决。把这个问题留给面临同样问题的人。

python mscoco

6
推荐指数
3
解决办法
4万
查看次数

scipy.misc.imresize已弃用,但skimage.transform.resize提供了不同的结果

文件scipy.misc.imresize指出,imresize已被弃用!使用skimage.transform.resize代替。但似乎与skimage.transform.resize给出不同的结果scipy.misc.imresize

例如,对于1.jpg

import numpy as np
from skimage.transform import resize
from scipy.misc import imresize
from imageio import imread

img = imread('1.jpg')
res = (1280, 1280)
img1 = resize(img, res) # np.float64, skimage
img2 = imresize(img, res) # np.uint8, scipy.misc
img3 = (img1 * 255).astype(np.uint8)
# from skimage import img_as_ubyte
# img3 = img_as_ubyte(img1)

np.count_nonzero(img3 - img2)
1748642
Run Code Online (Sandbox Code Playgroud)

容易发现它们img2并且img3明显不同,但是当使用imageio.save它们时,它们看起来相同。

python scipy scikit-image

6
推荐指数
1
解决办法
2749
查看次数

对python中的lambda表达式感到困惑

我理解正常的lambda表达式,例如

g = lambda x: x**2
Run Code Online (Sandbox Code Playgroud)

然而,对于一些复杂的,我对它们有点困惑.例如:

for split in ['train', 'test']:
    sets = (lambda split=split: newspaper(split, newspaper_devkit_path))

def get_imdb():
    return sets()
Run Code Online (Sandbox Code Playgroud)

newspaper功能在哪里.我想知道它到底是什么sets以及为什么get_imdb函数可以返回值sets()

谢谢你的帮助!

补充:代码实际上来自这里factory.py

python lambda

5
推荐指数
1
解决办法
92
查看次数

python读取复杂的Matlab struct mat文件

我知道mat文件的版本问题,它们对应于python中的不同加载模块,即scipy.ioh5py。我还搜索了很多类似的问题,例如scipy.io.loadmat 嵌套结构(即字典)How to keep Matlab struct while accessing in python? 。但当涉及到更复杂的 mat 文件时,它们都会失败。我的anno_bbox.mat文件结构如下所示:

前两级:

anno_bbox

bbox_测试

尺寸方面:

尺寸

在海:

海

在海 bbox human 中:

bbox人

当我使用时spio.loadmat('anno_bbox.mat', struct_as_record=False, squeeze_me=True),它只能获取作为字典的第一级信息。

>>> anno_bbox.keys()
dict_keys(['__header__', '__version__', '__globals__', 'bbox_test', 
'bbox_train', 'list_action'])
>>> bbox_test = anno_bbox['bbox_test']
>>> bbox_test.keys()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'keys'
>>> bbox_test
array([<scipy.io.matlab.mio5_params.mat_struct object at 0x7fa8660ab128>,
   <scipy.io.matlab.mio5_params.mat_struct object at 0x7fa8660ab2b0>,
   <scipy.io.matlab.mio5_params.mat_struct object at 0x7fa8660ab710>, …
Run Code Online (Sandbox Code Playgroud)

python matlab scipy mat

5
推荐指数
1
解决办法
1万
查看次数

如何保存两个摄像机的数据但不影响它们的图像采集速度?

我正在使用多光谱相机来收集数据.一个是近红外线,另一个是彩色的.不是两个摄像头,而是一个摄像头可以同时获得两种不同的图像.我可以使用一些API函数,如J_Image_OpenStream.核心代码的两部分如下所示.一个用于打开两个流(实际上它们在一个样本中,我必须使用它们,但我的意思并不太清楚)并设置两个avi文件的保存路径并开始采集.

 // Open stream
 retval0 = J_Image_OpenStream(m_hCam[0], 0, reinterpret_cast<J_IMG_CALLBACK_OBJECT>(this), reinterpret_cast<J_IMG_CALLBACK_FUNCTION>(&COpenCVSample1Dlg::StreamCBFunc0), &m_hThread[0], (ViewSize0.cx*ViewSize0.cy*bpp0)/8);
if (retval0 != J_ST_SUCCESS) {
    AfxMessageBox(CString("Could not open stream0!"), MB_OK | MB_ICONEXCLAMATION);
    return;
}
TRACE("Opening stream0 succeeded\n");
retval1 = J_Image_OpenStream(m_hCam[1], 0, reinterpret_cast<J_IMG_CALLBACK_OBJECT>(this), reinterpret_cast<J_IMG_CALLBACK_FUNCTION>(&COpenCVSample1Dlg::StreamCBFunc1), &m_hThread[1], (ViewSize1.cx*ViewSize1.cy*bpp1)/8);
if (retval1 != J_ST_SUCCESS) {
    AfxMessageBox(CString("Could not open stream1!"), MB_OK | MB_ICONEXCLAMATION);
    return;
}
TRACE("Opening stream1 succeeded\n");

const char *filename0 = "C:\\Users\\shenyang\\Desktop\\test0.avi"; 
const char *filename1 = "C:\\Users\\shenyang\\Desktop\\test1.avi";
int fps = 10; //frame per second
int codec = -1;//choose the compression method

writer0 = …
Run Code Online (Sandbox Code Playgroud)

c++ video buffer opencv avi

3
推荐指数
1
解决办法
735
查看次数

cv2,scipy.misc和skimage之间的区别

之间的主要区别是什么cv2.imread / resize/ imwrite,scipy.misc.imread / imresize/ imsave以及skimage.io.imread / skimage.transform.resize / skimage.io.imsave如何决定使用哪一个?

我知道cv2并且skimage有不同的编码器,cv2默认使用'BGR'而不是'RGB'.但有时一个脚本可能会一起使用它们,例如main.py,它使用的地方scipy.misc.imread,cv2.imresizecv2.imwrite.我想知道这样做的原因.

python scipy scikit-image cv2

3
推荐指数
1
解决办法
2600
查看次数

Tensorflowdataset.batch()未显示实际批次大小

我想将基于原始队列的数据加载机制更改为tf.dataAPI。

原始代码是:

    # Index queue
    self.input_idxs = tf.placeholder(tf.int64, shape=[None, 2])
    idx_queue = tf.FIFOQueue(1e8, tf.int64)
    self.enq_idxs = idx_queue.enqueue_many(self.input_idxs)
    get_idx = idx_queue.dequeue()

    # Image loading queue
    img_queue = tf.FIFOQueue(opt.max_queue_size, task.proc_arg_dtype)
    load_data = tf.py_func(task.load_sample_data, [get_idx], task.proc_arg_dtype)
    enq_img = img_queue.enqueue(load_data)
    init_sample = img_queue.dequeue()

    # Preprocessing queue
    # (for any preprocessing that can be done with TF operations)
    data_queue = tf.FIFOQueue(opt.max_queue_size, task.data_arg_dtype,
                              shapes=task.data_shape)
    enq_data = data_queue.enqueue(task.preprocess(init_sample, train_flag))
    self.get_sample = data_queue.dequeue_many(opt.batchsize)
Run Code Online (Sandbox Code Playgroud)

更改后为:

    # Dataset
    self.input_idxs = tf.placeholder(tf.int64, shape=[None, 2])
    dataset = tf.data.Dataset.from_tensor_slices(self.input_idxs)

    def load_sample(idx): …
Run Code Online (Sandbox Code Playgroud)

python tensorflow tensorflow-datasets

2
推荐指数
1
解决办法
2264
查看次数