小编Nim*_*avi的帖子

Numpy:替换数组中的随机元素

我已经google了一下,没有找到任何好的答案.

问题是,我有一个2d numpy数组,我想在随机位置替换它的一些值.

我找到了一些使用numpy.random.choice为数组创建掩码的答案.不幸的是,这不会在原始数组上创建视图,因此我无法替换其值.

所以这是我想做的一个例子.

想象一下,我有2d数组的浮点值.

[[ 1., 2., 3.],
 [ 4., 5., 6.],
 [ 7., 8., 9.]]
Run Code Online (Sandbox Code Playgroud)

然后我想替换任意数量的元素.如果我可以用参数调整将要替换多少元素,那将是很好的.可能的结果可能如下所示:

[[ 3.234, 2., 3.],
 [ 4., 5., 6.],
 [ 7., 8., 2.234]]
Run Code Online (Sandbox Code Playgroud)

我无法想到实现这一目标的好方法.感谢帮助.

编辑

感谢所有快速回复.

python random numpy

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

Python theano.scan点击参数

我正在拼命地理解theano.scan函数中的taps参数.不幸的是,我无法提出具体问题.

我只是不明白"水龙头"机制.好吧,我还好.我知道序列传递给函数的顺序,但我不知道其含义.例如(我从另一个问题Python借用了这段代码- Theano scan()函数):

import numpy as np
import theano
import theano.tensor as T


def addf(a1,a2):
    print(a1)
    print(a2)
    return a1+a2

i = T.iscalar('i')
x0 = T.ivector('x0') 
step= T.iscalar('step')

results, updates = theano.scan(fn=addf,
                   outputs_info=[dict(initial=x0, taps=[-3])],
                   non_sequences=step,
                   n_steps=i)

f=theano.function([x0, step,i],results)

input = [2, 3]

print(f(input, 2, 20))
Run Code Online (Sandbox Code Playgroud)

将水龙头设置为-1确实对我有意义.据我所知,它与设置抽头值相同,整个矢量'x0'被传递给addf函数.然后将x0添加"step"参数(int 2将被广播为相同的大小).在下一次迭代中,结果[4,5]将是输入,依此类推,产生以下输出:

[[ 4  5]
 [ 6  7]
 [ 8  9]
 [10 11]
 [12 13]
 [14 15]
 [16 17]
 [18 19]
 [20 21]
 [22 23]
 [24 25]
 [26 27]
 [28 29] …
Run Code Online (Sandbox Code Playgroud)

python theano

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

Haskell模式匹配:可读性和性能

我正在通过学习你的haskell教程,我一直在嘲笑作者给出的一些例子.

例如,他重新实现zip如下:

zip' :: [a] -> [b] -> [(a,b)]  
zip' _ [] = []  
zip' [] _ = []  
zip' (x:xs) (y:ys) = (x,y):zip' xs ys
Run Code Online (Sandbox Code Playgroud)

他对所有其他例子采用了类似的方法,他将最具体的模式放在第一位.这是一个略有不同的zip函数版本:

zip' :: [a] -> [b] -> [(a,b)]
zip' (x:xs) (y:ys)  = (x, y):zip' xs ys
zip' _ _            = []
Run Code Online (Sandbox Code Playgroud)

据我所知,两种方法都做同样的事情.如果提供空列表(x:xs)或(y:ys)将不匹配,将通过附加空列表[]来完成递归.

  1. 我个人更喜欢第二个版本的可读性,但也许我这样做是错的.
  2. 它对方法的性能有影响吗?据我所知,如果最顶层的模式不匹配,Haskell将检查下一个模式.模式的顺序是否会影响性能?

亲切的问候,

编辑:

可能重复: Haskell GHC:模式与N个构造函数匹配的时间复杂度是多少?

简介:模式的顺序对于语义(在严格评估参数方面)和函数的可读性非常重要.模式匹配本身将始终处于O(1)时间复杂度.

haskell pattern-matching

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

Keras MSE 定义

我偶然发现了mse在 Keras 中的定义,我似乎找不到解释。

def mean_squared_error(y_true, y_pred):
    return K.mean(K.square(y_pred - y_true), axis=-1)
Run Code Online (Sandbox Code Playgroud)

我期待跨批次的平均值,即axis=0,但相反,它是axis=-1

我还稍微玩了一下,看看它的K.mean行为是否真的像numpy.mean. 我一定是误会了什么。有人可以澄清一下吗?

我实际上无法在运行时查看成本函数内部,对吗?据我所知,该函数是在编译时调用的,这会阻止我评估具体值。

我的意思是......想象一下进行回归并有一个输出神经元并以 10 的批量大小进行训练。

>>> import numpy as np
>>> a = np.ones((10, 1))
>>> a
array([[ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.]])
>>> np.mean(a, axis=-1)
array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])
Run Code Online (Sandbox Code Playgroud)

它所做的只是压平数组,而不是取所有预测的平均值。

python machine-learning neural-network deep-learning keras

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

Apache Spark:SparkPi示例

我正在尝试运行Spark示例,但我只是不了解发生了什么。我用了

MASTER=spark://Illidan:7077 ./bin/run-example SparkPi 10
Run Code Online (Sandbox Code Playgroud)

确实启动了该过程,但是我得到的只是INFO消息。

那么“ 10”的作用是什么?

可以关闭INFO消息吗?

输出在哪里?计算得出的Pi在哪里?

我可以从外壳启动示例吗?我是否必须从spark壳启动才能查看打印件,还是将其保存在我不知道的文件中?

我向上帝发誓,我已经浏览了一百次文档。我需要一些帮助。

Hier是我的终端输出的一小段。提前致谢。:D

14/12/31 00:02:25 INFO storage.BlockManagerInfo: Added broadcast_0_piece0 in memory on 192.168.2.5:44913 (size: 1295.0 B, free: 267.3 MB)
14/12/31 00:02:26 INFO scheduler.TaskSetManager: Finished task 1.0 in stage 0.0 (TID 1) in 25231 ms on 192.168.2.7 (8/10)
14/12/31 00:02:26 INFO scheduler.TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 25358 ms on 192.168.2.5 (9/10)
14/12/31 00:02:26 INFO storage.BlockManagerInfo: Added broadcast_0_piece0 in memory on 192.168.2.4:36505 (size: 1295.0 B, …
Run Code Online (Sandbox Code Playgroud)

apache-spark

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

Python 3.x Shifting Ranges

假设我有这样的范围:

x = range(10)
Run Code Online (Sandbox Code Playgroud)

它将具有以下值作为列表:

list(x)      # Prints [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

我想改变这个范围(可能多次)并迭代结果,例如

             #        [7, 8, 9, 0, 1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

创建等效列表不是问题.但我想知道是否有可能创建这样的东西作为一个范围来节省内存中的一些空间,当然如果解决方案可以达到如下性能,那将是很好的:

for i in range(1000000)
Run Code Online (Sandbox Code Playgroud)

python loops range python-3.x

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

Keras/Tensorflow:奇怪的辍学行为

我想知道dropout是如何工作的,所以我进入了layers.core模块并将dropout调用从in_train_phase更改为in_test_phase.

我不确定我的更改是否对狡猾的辍学行为负责,所以请耐心等待.

现在将这些更改记在下面的代码片段中:

from keras.models import Model
from keras.layers import Dropout, Input
import numpy as np
import tensorflow as tf
from keras import initializers

x=np.ones((2,2,4))
# x[:,1,:] = 1

print(x)

from keras.layers import Dense

input = Input(name='atom_inputs', shape=(2, 4))

x1 = Dense(4, activation='linear',
           kernel_initializer=initializers.Ones(),
           bias_initializer='zeros')(input)
x1 = Dropout(0.5, noise_shape=(tf.shape(input)[0], 1, 4))(x1)


fmodel = Model(input, x1)
fmodel.compile(optimizer='sgd', loss='mse')
print(fmodel.predict(x))
Run Code Online (Sandbox Code Playgroud)

将根据辍学率产生不同的预测.

例如:

Dropout(0.2)
[[[5. 5. 5. 5.]
  [5. 5. 5. 5.]]

 [[5. 0. 5. 0.]
  [5. 0. 5. 0.]]]

Dropout(0.5)
[[[0. 0. …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network keras tensorflow

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

Tensorflow 与 bazel:avx 被忽略?

我正在尝试手动编译张量流以利用 avx。不幸的是,我似乎专门忽略了这些说明。我可能会补充一点,我正在 Windows 10 上工作。任何帮助将不胜感激。谢谢。

我对 bazel 使用了以下命令:

bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both -k //tensorflow/tools/pip_package:build_pip_package
Run Code Online (Sandbox Code Playgroud)

使用 bazel 编译

windows compilation bazel tensorflow

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