我使用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中实现这样的东西吗?
以下代码:
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) 我用selenium开始下载.下载完成后,需要采取某些措施,是否有任何简单的方法可以找出下载完成的时间?(我正在使用FireFox驱动程序)
我想创建一个字典,其中键是正则表达式:
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文件:
python script.py arg1 arg2
Run Code Online (Sandbox Code Playgroud)
我可以检索arg1并arg2在内部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)
这可能吗?
我想让IPython笔记本运行以进行一些计算并显示一些视觉效果。
IPython Notebook完成后,我希望IPython Notebook中的最后一个单元以编程方式保存IPython Notebook。然后,我想将笔记本(包含所有输出)复制到另一个目录中,以记录结果。
我可以轻松地编写复制位,但是我不确定如何获得IPython笔记本以编程方式保存自身?这可能吗?提前致谢!
我正在尝试直接通过 javascript 执行 python 代码:
在 javascript consolde 中,我输入: IPython.notebook.kernel.execute("2+2")
但我得到一个奇怪的输出: "6CEA73CC644648DDA978FDD6A913E519"
有什么方法可以利用所有可用的 IPython javascript 函数,从 javascript 控制台运行 python 代码,如图所示?我确定有一种方法,但我一直在尝试它太久了,并认为我会在这里发帖。
(我需要这个来在 IPython 之上构建一个应用程序)
提前致谢!
我试图分析一些混乱的代码,碰巧在函数中使用全局变量(我试图重构代码,以便函数只使用局部变量).有没有办法检测函数中的全局变量?
例如:
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函数,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).
我对功能等效的定义如下:
如果两个函数f和g总是产生给定相同的输入相同的输出,然后f和g在功能上等同.
此外,假设没有全局变量参与f和g.
是否有可能自动确定(无需人工检查)python功能f和g功能相同?
我有以下代码将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的参数.这可能吗?我研究了广播,但广播没有明确改变维度/堆栈.
我有一个清单:
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脚本中提取所有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)
因为:
def\n,下一行的起始字符不是空格\S但是,我似乎无法通过多行来实现这一点.
编辑:Python函数可能包含在没有.py扩展名的文件中; 例如,它们可以包含在具有.ipynb扩展名的IPython笔记本中,因此我不一定总是import代码和使用dir().
python ×12
function ×2
ipython ×2
regex ×2
command-line ×1
dictionary ×1
javascript ×1
jupyter ×1
scikit-learn ×1
selenium ×1
sorting ×1
tensorflow ×1
theano ×1