小编app*_*der的帖子

在tensorflow中获取dynamic_rnn的最后一个输出?

我使用dynamic_rnn来处理MNIST数据:

# LSTM Cell
lstm = rnn_cell.LSTMCell(num_units=200,
                         forget_bias=1.0,
                         initializer=tf.random_normal)

# Initial state
istate = lstm.zero_state(batch_size, "float")

# Get lstm cell output
output, states = rnn.dynamic_rnn(lstm, X, initial_state=istate)

# Output at last time point T
output_at_T = output[:, 27, :]
Run Code Online (Sandbox Code Playgroud)

完整代码:http://pastebin.com/bhf9MgMe

lstm的输入是 (batch_size, sequence_length, input_size)

因此,尺寸output_at_T(batch_size, sequence_length, num_units)在哪里num_units=200.

我需要沿sequence_length 维度获取最后一个输出.在上面的代码中,这是硬编码的27.但是,我sequence_length事先并不知道,因为它可以在我的应用程序中从批处理更改为批处理.

我试过了:

output_at_T = output[:, -1, :]
Run Code Online (Sandbox Code Playgroud)

但是它说负面索引还没有实现,我尝试使用占位符变量和常量(我可以理想地sequence_length为特定批次提供); 既没有奏效.

有什么方法可以在tensorflow atm中实现这样的东西吗?

python tensorflow

17
推荐指数
3
解决办法
8190
查看次数

当有2个类时,sklearn LabelBinarizer返回向量

以下代码:

from sklearn.preprocessing import LabelBinarizer
lb = LabelBinarizer()
lb.fit_transform(['yes', 'no', 'no', 'yes'])
Run Code Online (Sandbox Code Playgroud)

收益:

array([[1],
       [0],
       [0],
       [1]])
Run Code Online (Sandbox Code Playgroud)

但是,我希望每个类有一列:

array([[1, 0],
       [0, 1],
       [0, 1],
       [1, 0]])
Run Code Online (Sandbox Code Playgroud)

(我需要这种格式的数据,所以我可以把它交给一个在输出层使用softmax函数的神经网络)

当有两个以上的类时,LabelBinarizer的行为符合要求:

from sklearn.preprocessing import LabelBinarizer
lb = LabelBinarizer()
lb.fit_transform(['yes', 'no', 'no', 'yes', 'maybe'])
Run Code Online (Sandbox Code Playgroud)

回报

array([[0, 0, 1],
       [0, 1, 0],
       [0, 1, 0],
       [0, 0, 1],
       [1, 0, 0]])
Run Code Online (Sandbox Code Playgroud)

上面,每班有1列.

当有2个类时,有没有简单的方法来实现相同的功能(每个类1列)?

编辑:基于yangjie的回答,我写了一个类来包装LabelBinarizer以产生上述所需的行为:http://pastebin.com/UEL2dP62

import numpy as np
from sklearn.preprocessing import LabelBinarizer


class LabelBinarizer2:

    def __init__(self):
        self.lb = LabelBinarizer()

    def fit(self, X):
        # …
Run Code Online (Sandbox Code Playgroud)

python machine-learning scikit-learn

13
推荐指数
1
解决办法
7841
查看次数

python selenium,找到下载完成后?

我用selenium开始下载.下载完成后,需要采取某些措施,是否有任何简单的方法可以找出下载完成的时间?(我正在使用FireFox驱动程序)

python selenium

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

正则表达式可以用作字典中的键吗?

我想创建一个字典,其中键是正则表达式:

d = {'a.*': some_value1, 'b.*': some_value2}
Run Code Online (Sandbox Code Playgroud)

然后,当我查看字典时:

d['apple']
Run Code Online (Sandbox Code Playgroud)

我希望苹果'apple'与正则表达式的键匹配.如果与key/regular-expression完全匹配,则应返回相应的值.

例如'apple','a.*'完全匹配正则表达式,因此some_value1应该返回.

当然,所有这些都假定正则表达式键不冲突(即两个键不应该完全匹配相同的字符串).假设我可以在构建密钥时手动处理此要求.

这在Python中可行吗?如果是这样,那将是一个非常优雅和强大的构造!

python regex dictionary

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

Python文件关键字参数?

在命令行中,我能够将参数传递给python文件:

python script.py arg1 arg2
Run Code Online (Sandbox Code Playgroud)

我可以检索arg1arg2在内部script.py:

import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]
Run Code Online (Sandbox Code Playgroud)

但是,我想将关键字参数发送到python脚本,并将它们作为字典检索:

python script.py key1=value1 key2=value2
Run Code Online (Sandbox Code Playgroud)

然后我想在python中访问关键字参数作为字典:

{'key1' : 'value1', 'key2' : 'value2'}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

python command-line keyword-argument

10
推荐指数
1
解决办法
5858
查看次数

从自身内部以编程方式保存IPython笔记本吗?

我想让IPython笔记本运行以进行一些计算并显示一些视觉效果。

IPython Notebook完成后,我希望IPython Notebook中的最后一个单元以编程方式保存IPython Notebook。然后,我想将笔记本(包含所有输出)复制到另一个目录中,以记录结果。

我可以轻松地编写复制位,但是我不确定如何获得IPython笔记本以编程方式保存自身?这可能吗?提前致谢!

python ipython ipython-notebook ipython-magic jupyter

8
推荐指数
2
解决办法
2772
查看次数

IPython notebook ~ 使用javascript运行python代码?

我正在尝试直接通过 javascript 执行 python 代码:

  1. 我在 Chrome 上启动 IPython Notebook
  2. 使用 chrome 开发人员工具,我打开了 javascript 控制台。

在 javascript consolde 中,我输入: IPython.notebook.kernel.execute("2+2")

在此处输入图片说明

但我得到一个奇怪的输出: "6CEA73CC644648DDA978FDD6A913E519"

有什么方法可以利用所有可用的 IPython javascript 函数,从 javascript 控制台运行 python 代码,如图所示?我确定有一种方法,但我一直在尝试它太久了,并认为我会在这里发帖。

(我需要这个来在 IPython 之上构建一个应用程序)

提前致谢!

javascript python ipython ipython-notebook

8
推荐指数
2
解决办法
2952
查看次数

检测python函数中的所有全局变量?

我试图分析一些混乱的代码,碰巧在函数中使用全局变量(我试图重构代码,以便函数只使用局部变量).有没有办法检测函数中的全局变量?

例如:

def f(x):
    x = x + 1
    z = x + y
    return z
Run Code Online (Sandbox Code Playgroud)

这里全局变量是y因为它不是作为参数给出的,也不是在函数中创建的.

我尝试使用字符串解析检测函数中的全局变量,但它有点乱; 我想知道是否有更好的方法来做到这一点?

编辑:如果有人感兴趣,这是我用来检测全局变量的代码(基于kindall的答案和Paolo对这个问题的回答:从Python中的脚本捕获stdout):

from dis import dis

def capture(f):
    """
    Decorator to capture standard output
    """
    def captured(*args, **kwargs):
        import sys
        from cStringIO import StringIO

        # setup the environment
        backup = sys.stdout

        try:
            sys.stdout = StringIO()     # capture output
            f(*args, **kwargs)
            out = sys.stdout.getvalue() # release output
        finally:
            sys.stdout.close()  # close the stream 
            sys.stdout = backup # restore original …
Run Code Online (Sandbox Code Playgroud)

python function global-variables

7
推荐指数
1
解决办法
784
查看次数

是否有可能知道两个python函数是否在功能上等效?

假设我有两个python函数,f并且g:

def f(x):
    y = x**2 + 1
    return y

def g(x):
    a = x**2
    b = a + 1
    return b
Run Code Online (Sandbox Code Playgroud)

这两个功能在功能上明显相同(均返回x**2 + 1).

我对功能等效的定义如下:

如果两个函数fg总是产生给定相同的输入相同的输出,然后fg在功能上等同.

此外,假设没有全局变量参与fg.

是否有可能自动确定(无需人工检查)python功能fg功能相同?

python function

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

Theano堆栈矩阵以编程方式?

我有以下代码将2个矩阵堆叠成3D张量.

import theano
import theano.tensor as T
A = T.matrix("A")
B = theano.tensor.stack(A, A)
f = theano.function(inputs=[A], outputs=B)
print f([range(10)]*2)
Run Code Online (Sandbox Code Playgroud)

但是,我不知道我需要提前多少次堆叠矩阵.例如,第四行代码可能是:

B = theano.tensor.stack(A, A, A)
B = theano.tensor.stack(A, A, A, A)
etc...
Run Code Online (Sandbox Code Playgroud)

是否有一个theano函数复制矩阵n次:

theano.some_function(A, 3) = theano.tensor.stack(A, A, A)
Run Code Online (Sandbox Code Playgroud)

然后我可以传递那个3,作为theano函数f的参数.这可能吗?我研究了广播,但广播没有明确改变维度/堆栈.

python theano

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

Python - 有效地找到某些东西会在排序列表中出现的位置?

我有一个清单:

x = ['c', 'a', 'e']
Run Code Online (Sandbox Code Playgroud)

我可以对此列表进行排序:

x_sorted = sorted(x)
Run Code Online (Sandbox Code Playgroud)

x_sorted 就是现在 ['a', 'c', 'e']

现在让我们说我有一个新的变量 y = 'd'

我想知道x_sorted这个新变量会落在哪里.在此示例中,新变量y包含字符串,'d'因此它将放置['a', 'c', 'd', 'e']在列表的索引2中.我希望尽可能有效地找出这个索引号(因为我必须多次重复这个过程).

这是我写的一个函数,它非常简单地执行任务:

def f(x_sorted, y):
    new_list = x_sorted[:] + [y]
    return sorted(new_list).index(y)
Run Code Online (Sandbox Code Playgroud)

这给了我正确的答案.

我想知道是否有更好的更有效的方法,这f将被称为100,000+次.

提前致谢!

python sorting

4
推荐指数
1
解决办法
76
查看次数

使用正则表达式检测python函数?

我想在python脚本中提取所有python函数.有没有我可以使用的单一正则表达式,例如:

import re
all_functions = re.findall(regex, python_script)
Run Code Online (Sandbox Code Playgroud)

我已经实现了一个非常麻烦的方法,涉及许多if语句,但我觉得有一个更优雅的解决方案与正则表达式.

我认为正则表达式应该是这样的:

'def.*?\n\S'
Run Code Online (Sandbox Code Playgroud)

因为:

  1. 功能始于 def
  2. 随后都有(但我们想要非贪婪)
  3. 在换行符后,函数结束\n,下一行的起始字符不是空格\S

但是,我似乎无法通过多行来实现这一点.

编辑:Python函数可能包含在没有.py扩展名的文件中; 例如,它们可以包含在具有.ipynb扩展名的IPython笔记本中,因此我不一定总是import代码和使用dir().

python regex

0
推荐指数
1
解决办法
81
查看次数