小编Hos*_*ein的帖子

在安装lightgbm的过程中,它说你应该先安装cmake,而我已经安装了它

我想在Ubuntu上安装GPU版本的lightgbm,基于以下命令:

pip install lightgbm --install-option=--gpu
Run Code Online (Sandbox Code Playgroud)

安装过程中出现错误“请先安装 CMake”。安装CMake后,我再次遇到同样的错误。为了确保已安装 CMake,我运行以下命令并获取已安装 CMake 的正确版本:

/opt/cmake/bin/cmake -version
Run Code Online (Sandbox Code Playgroud)

该错误的可能原因是什么?

ubuntu cmake lightgbm

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

为什么在Tensorflow中将None用作批次维度?

在以下代码中,None用来声明占位符的大小。

x_data = tf.placeholder(tf.int32, [None, max_sequence_length]) 
y_output = tf.placeholder(tf.int32, [None])
Run Code Online (Sandbox Code Playgroud)

据我所知,这None用于指定可变批次尺寸。但是,在每个代码中,我们都有一个显示批处理大小的变量,例如:

batch_size = 250
Run Code Online (Sandbox Code Playgroud)

那么,None在这种情况下,有什么理由要使用,而不是简单地将占位符声明为吗?

x_data = tf.placeholder(tf.int32, [batch_size, max_sequence_length]) 
y_output = tf.placeholder(tf.int32, [batch_size])
Run Code Online (Sandbox Code Playgroud)

python tensorflow

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

在不使用嵌入的情况下在 keras 中屏蔽 LSTM 中的零输入

我正在 Keras 中训练 LSTM:

iclf = Sequential()
iclf.add(Bidirectional(LSTM(units=10, return_sequences=True, recurrent_dropout=0.3), input_shape=(None,2048)))
iclf.add(TimeDistributed(Dense(1, activation='sigmoid')))
Run Code Online (Sandbox Code Playgroud)

每个单元格的输入是一个 2048 向量,它是已知的,不需要学习(如果你愿意,它们是输入句子中单词的 ELMo 嵌入)。因此,这里我没有Embedding层。

由于输入序列具有可变长度,因此使用pad_sequences以下方法填充它们:

X = pad_sequences(sequences=X, padding='post', truncating='post', value=0.0, dtype='float32')
Run Code Online (Sandbox Code Playgroud)

现在,我想告诉 LSTM 忽略这些填充元素。官方的方法是使用 Embedding 层与mask_zero=True. 但是,这里没有嵌入层。如何通知 LSTM 屏蔽零元素?

embedding lstm keras

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

"安装Quartz模块时没有这样的文件:'requirements.txt'错误"

当我尝试在我的系统上安装Quartz时pip install Quartz,我面临以下错误.我使用Mac OSX和Anaconda.任何帮助表示赞赏.

Complete output from command python setup.py egg_info:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/private/var/folders/sb/llj7h5px227_5b0__3v0sw5r0000gn/T/pip-build-qf8ezbu5/Quartz/setup.py", line 35, in <module>
    install_requires=read_dependencies("requirements.txt"),
  File "/private/var/folders/sb/llj7h5px227_5b0__3v0sw5r0000gn/T/pip-build-qf8ezbu5/Quartz/setup.py", line 7, in read_dependencies
    with open(req_file) as req:
FileNotFoundError: [Errno 2] No such file or directory: 'requirements.txt'
Run Code Online (Sandbox Code Playgroud)

python pip quartz

4
推荐指数
2
解决办法
5706
查看次数

为什么矢量化 numpy 代码比 for 循环慢?

我有两个numpy的阵列,X并且Y,具有形状(n,d)(m,d)分别。假设我们要计算每行X和每行之间的欧几里德距离Y,并将结果存储在Z形状为 的数组中(n,m)。我有两个实现。第一个实现使用两个 for 循环,如下所示:

for i in range(n):
      for j in range(m):
        Z[i,j] = np.sqrt(np.sum(np.square(X[i] - Y[j])))
Run Code Online (Sandbox Code Playgroud)

第二种实现通过向量化只使用一个循环:

for i in range(n):
      Z[i] = np.sqrt(np.sum(np.square(X[i]-Y), axis=1))
Run Code Online (Sandbox Code Playgroud)

当我在特定运行这些代码XY数据时,首先执行需要近30秒,而第二个执行需要近60秒。我希望第二个实现更快,因为它使用矢量化。它运行缓慢的原因是什么?我知道我们可以通过完全矢量化代码来获得更快的实现,但我不明白为什么第二个代码(部分矢量化)比非矢量化版本慢。

这是完整的代码:

n,m,d = 5000,500,3000
X = np.random.rand(n,d)
Y = np.random.rand(m,d)
Z = np.zeros((n,m))

tic = time.time()
for i in range(n):
      for j in range(m):
        Z[i,j] = np.sqrt(np.sum(np.square(X[i] - Y[j])))
print('Elapsed time 1: ', …
Run Code Online (Sandbox Code Playgroud)

python performance numpy vectorization

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