我正在尝试调试keras我已经构建的模型.似乎我的渐变是爆炸性的,或者有0或者其他类似的除法.当它们通过网络反向传播时能够检查各种梯度将是方便的.像下面这样的东西是理想的:
model.evaluate(np.array([[1,2]]), np.array([[1]])) #gives the loss
model.evaluate_gradient(np.array([[1,2]]), np.array([[1]]), layer=2) #gives the doutput/dloss at layer 2 for the given input
model.evaluate_weight_gradient(np.array([[1,2]]), np.array([[1]]), layer=2) #gives the dweight/dloss at layer 2 for the given input
Run Code Online (Sandbox Code Playgroud) 每当sklearn模型适合某些数据时,它就会最小化某些损失函数。如何使用该损失函数获得模型损失?
例如
model = sklearn.linear_model.LogisticRegression().fit(X_train,y_train)
model.get_loss(X_train, y_train) #gives the loss for these values
model.get_loss(X_test, y_test) #gives the loss for other values
Run Code Online (Sandbox Code Playgroud)
请注意,该.score方法不执行此操作。
我喜欢使用Jupyter Notebook。如果我在virtualbox的VM中运行它,则可以保存VM的状态,然后从第二天停下来的地方继续。如果要在docker容器中运行它,可以做类似的事情吗?即将容器的“状态”转储到磁盘,然后将其重新启动并重新加载“状态”?
这是std::make_tuple标准库中的代码.
template<typename... _Elements>
inline tuple<typename __decay_and_strip<_Elements>::__type...>
make_tuple(_Elements&&... __args)
{
typedef tuple<typename __decay_and_strip<_Elements>::__type...>
__result_type;
return __result_type(std::forward<_Elements>(__args)...);
}
Run Code Online (Sandbox Code Playgroud)
我想做的是__args在创建元组之前进行排序,大概是std::sort(..., Compare comp)在用户传递适当的比较器的地方,可以用来对__args中的任何类型的东西进行排序.
但是,我对cpp相对较新,我不明白这个函数中的一半代码,并且std::sort需要一个参数结束__args,而且我不确定如何推导出它.
也请说明typename __decay_and_strip<_Elements>::__type...和_Elements&&...位...
编辑因为对于任意类型组合,返回类型在编译时将是未知的,通用情况似乎是不可能的.假设所有同类型的,那么,我们替换..._Elements用T,我仍然不确定如何获得" .end()"的__args用于std::sort
我正在寻求从中迁移matplotlib到plotly,但似乎plotly没有很好的集成pandas.例如,我正在尝试制作一个指定箱数的加权直方图:
sns.distplot(df.X, bins=25, hist_kws={'weights':df.W.values},norm_hist=False,kde=False)
Run Code Online (Sandbox Code Playgroud)
但我没有找到一个简单的方法来做到这一点plotly.如何以直接的方式从pandas.DataFrame使用plotly中生成数据的直方图?
有时,我通过反复应用map来构建事物,然后让python一次执行所有操作。
例如,我可以建立如下范围列表:
foo = [256]*3
foo = map(range, foo)
foo = map(list, foo)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我所拥有的只是一个包含3个项目的列表,以及几个地图对象。懒惰了。如果在这一点上我想求值foo,我可以调用,例如,list(foo)所有maps都将执行,并且我将得到一个嵌套的范围列表。
但是,假设我想在一个foo就位的函数上映射一个函数。
foo = [256]*3
foo = map(range, foo)
foo = map(list, foo)
in_place_op = map(lambda x: x.sort(reverse=True), foo)
Run Code Online (Sandbox Code Playgroud)
如果我尝试评估in_place_op,它将无法正确应用于的要素foo。即使我继续进行评估foo,也会发生这种情况,因为它in_place_op已应用于指向以下位置的地图foo:
foo = [256]*3
foo = map(range, foo)
foo = map(list, foo)
in_place_op = map(lambda x: x.sort(reverse=True), foo)
foo = list(foo)
list(in_place_op)
print(foo)
#[[1,2,3...],[1,2,3...],[1,2,3...]]
#expected [[255,254,...],...]
Run Code Online (Sandbox Code Playgroud)
为了得到这个工作,我不得不list(foo) 之前 map …
我正在尝试使用户能够传入函数名称。出于某种原因,argparse 似乎在检查选项之前执行类型检查/转换。这是一个错误吗?最好的办法是什么?
import argparse
def foo():
return 'foo'
def bar():
return 'bar'
parser = argparse.ArgumentParser()
functions = {f.__name__:f for f in [foo, bar]}
parser.add_argument("function", type=lambda f: functions.get(f), help="which function", choices=functions)
args = parser.parse_args()
print(args.function())
Run Code Online (Sandbox Code Playgroud)
这抛出:
$ python blah.py foo
usage: blah.py [-h] {foo,bar}
blah.py: error: argument function: invalid choice: <function foo at 0x7f65746dd848> (choose from 'foo', 'bar')
Run Code Online (Sandbox Code Playgroud) 我想使用itertools的各种函数来创建numpy数组.我可以很容易地提前计算产品中元素的数量,组合,排列等,因此分配空间不应该是一个问题.
例如
coords = [[1,2,3],[4,5,6]]
iterable = itertools.product(*coords)
shape = (len(coords[0]), len(coords[1]))
arr = np.iterable_to_array(
iterable,
shape=shape,
dtype=np.float64,
count=shape[0]*shape[1]
) #not a real thing
answer = np.array([
[1,4],[1,5],[1,6],
[2,4],[2,5],[2,6],
[3,4],[3,5],[3,6]])
assert np.equal(arr, answer)
Run Code Online (Sandbox Code Playgroud) help()进入类时,我已经在许多文档字符串中看到以下语句:“参见help(type(self))以获取准确的签名”。
值得注意的是,它是在help()为scipy.stats.binom.__init__和stockfish.Stockfish.__init__在最起码。因此,我认为这是某种股票信息。
无论如何,我不知道这到底意味着什么。这是有用的信息吗?请注意,可以说,在班级“之外”,我永远也无法访问self。此外,如果我无法访问__init__方法的签名,因此甚至无法执行,则无法实例化一个类help(type(my_object_instantiated))。这是一个陷阱。22.要使用它__init__,我需要签名__init__,但是为了读取它__init__,我需要使用实例化一个对象__init__。这一点在理论上是严格的,但是,即使我确实实例化了一个scipy.stats.binom,它实际上也会返回一个完全不同的类的对象,其对象中的rv_frozen消息完全相同__init__docstring,但其签名完全不同,用处不大。换句话说,help(type(self))实际上并没有给出准确的签名。这没用。
有谁知道此消息的来源或应该如何处理?仅仅是来自文档生成器的库存垃圾,还是我在误用户?
例如,np.array([[1,2],[3,4]])[np.triu_indices(2)]具有 shape (3,),是上三角条目的扁平列表。但是,如果我有一批 2x2 矩阵:
foo = np.repeat(np.array([[[1,2],[3,4]]]), 30, axis=0)
Run Code Online (Sandbox Code Playgroud)
我想获得每个矩阵的上三角索引,最简单的尝试是:
foo[:,np.triu_indices(2)]
Run Code Online (Sandbox Code Playgroud)
然而,这个对象实际上是有形状的(与我们批量提取上三角条目时所期望的相反)(30,2,3,2)。(30,3)
我们如何沿着批量维度广播元组索引?
python numpy multidimensional-array matrix-indexing array-broadcasting
python ×8
numpy ×2
argparse ×1
arrays ×1
c++ ×1
docker ×1
docstring ×1
histogram ×1
keras ×1
map-function ×1
plot ×1
python-3.x ×1
scikit-learn ×1