小编Div*_*oML的帖子

pip冻结和conda列表之间的区别

我使用"pip freeze"和"conda list"来列出我环境中安装的软件包,但它们的区别是什么?

pip conda

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

kera中class_weight和sample_weight的影响

有人可以在数学上告诉我在计算损失函数和指标时,在Keras中如何使用sample_weight和class_weight?一个简单的数学表达将是伟大的.

keras

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

在神经网络中添加辍学的地方?

我已经看到有关神经网络不同部分的丢失的描述:

  1. 重量矩阵中的丢失,

  2. 在矩阵乘法之后和relu之前隐藏层中的丢失,

  3. relu后隐藏层中的丢失,

  4. 并且在softmax函数之前输出分数中的丢失

我对应该在哪里执行辍学感到有点困惑.有人可以帮忙详细说明吗?谢谢!

neural-network conv-neural-network recurrent-neural-network dropout

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

C++条件变量notify_one:释放锁之前还是之后?

以下是来自CPPConference.com的有关 C++ 条件变量的一些代码示例:

std::mutex m;
std::condition_variable cv;
std::string data;
bool ready = false;
bool processed = false;

void worker_thread()
{
    // Wait until main() sends data
    std::unique_lock<std::mutex> lk(m);
    cv.wait(lk, []{return ready;});

    // after the wait, we own the lock.
    std::cout << "Worker thread is processing data\n";
    data += " after processing";

    // Send data back to main()
    processed = true;
    std::cout << "Worker thread signals data processing completed\n";

    // Manual unlocking is done before notifying, to avoid waking up …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading

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

XGBoost 修剪步骤在做什么?

当我使用 XGBoost 拟合模型时,它通常会显示一系列消息,例如“updater_prune.cc:74: tree pruning end, 1 个 root, 6 extra nodes, 0 pruned nodes, max_depth=5”。我想知道 XGBoost 是如何进行树修剪的?我在他们的论文中找不到关于他们修剪过程的描述。

注意:我确实了解决策树修剪过程,例如预修剪和后修剪。这里我很好奇XGBoost的实际剪枝过程。通常修剪需要验证数据,但即使我没有给它任何验证数据,XGBoost 也会执行修剪。

decision-tree pruning xgboost

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

C++ 多线程:构造函数和析构函数是否需要互斥锁?

对于将被多个线程访问的对象,我是否需要为其构造函数和析构函数提供互斥体?

我的猜测是我需要在析构函数中使用互斥体,因为可能有一个线程访问该对象,而另一个线程删除该对象。

另一方面,我想不出我们在构造函数中需要互斥体的原因,因为在完全构造对象之前不能有其他线程访问该对象。

c++ multithreading

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

何时将 pytorch 张量放在 GPU 上?

我正在尝试使用 pytorch 在 GPU 上运行神经网络,并且我的数据有一些不寻常的形状,因此我使用 Dataset 和 DataLoader 来生成数据批次。我的代码在 CPU 上运行良好,但我对何时是将数据放到 GPU 上的正确时机有点困惑:

  1. 我的数据量足够小,可以全部放在 GPU 上,我是否应该在拟合之前将所有数据放在 GPU 上,以便所有 DataLoader 和 Dataset 操作仅在 GPU 上进行,以获得最佳执行速度?
  2. 另一种可能性是将所有数据保留在 CPU 上,当数据量变大时,这可能会很有用。在这种情况下,我应该调用batch.to("cuda")DataLoader 生成的每个批次吗?
  3. 我还应该在训练之前先将模型放在 GPU 上吗?它是一个足够小的模型,可以放在 GPU 上。
  4. 我的原始数据是 numpy 数组,因此我可以自由地编写在__getitem()___方法中返回 numpy 数组的数据集,或者将 numpy 数组转换为 pytorch 张量并编写返回 pytorch 张量的数据集。一种方法优于另一种方法吗?

numpy pytorch pytorch-dataloader

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

关于C++的困惑从函数返回引用

我一直对C++中的引用感到困惑,所以我做了一个小实验,使用了以下函数

std::vector<float> & fun(std::vector<float> & x) {
    return x;
}
Run Code Online (Sandbox Code Playgroud)

然后我使用以下两种方式调用该函数:

std::vector<float> x(10000);
std::vector<float> result1 = fun(x);
std::vector<float> & result2 = fun(x);
Run Code Online (Sandbox Code Playgroud)

现在变量result2确实是x的引用,但result1似乎是x的副本而不是引用.所以我在这里感到困惑:

为什么我可以将非引用变量声明为返回引用的函数的返回值?

C++是否更改了我对非引用变量的返回引用,因为我的result1声明不是引用?

c++ pointers

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

AWS Lambda 用于 IP 轮换?

我正在抓取一个网站,其中包含格式为root/page_number.html连续page_num整数的页面。如果我爬行太快,网站会阻止我,所以我认为使用 AWS Lambda 爬行是一个好主意,这样每次进行新函数调用时 IP 地址都会不断轮换。

然后我编写了每次只抓取 100 个页面的函数,以确保在具有不同 IP 地址的不同机器上生成许多并行任务。刚开始的时候效果还不错,但是爬了大约10万个页面之后还是被网站屏蔽了。这让我想知道:

  1. 是否保证每台机器的 IP 地址与同一区域中的另一台机器不同?
  2. 如果我正在运行大约 1000 个并发任务,它们最有可能在同一台计算机上还是不同的计算机上运行?
  3. 是否可以确保新启动的任务不会在已经运行另一个类似任务的同一台计算机上运行?

ip-address amazon-web-services web-scraping aws-lambda

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

迭代std :: vector而不使用vector.end()

C++新秀在这里.我编写了一个函数,它从向量中返回一个迭代器,我想使用这个迭代器从头到尾迭代向量.但是,矢量迭代器就像这样使用

for (auto iterator = vec.begin(); iterator != vec.end(); iterator ++) {
// do something here
}
Run Code Online (Sandbox Code Playgroud)

这意味着我还需要一个vec.end()来实现这一点.无论如何我只能使用vec.begin()迭代一个向量,就像我在python中常见的那样

for value in some_iterator:
# do something
Run Code Online (Sandbox Code Playgroud)

编辑:一些不相关的更新:

我看到一些关于我的python iterator和iterable的评论.迭代器确实可以这种方式使用(至少在Python 3中).例如:

some_list = [1,2,3,4]
some_iterator = iter(some_list)
for value in some_iterator:
    print(value)
Run Code Online (Sandbox Code Playgroud)

c++ iterator

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

过载运算符+ for vector:namespace std

我试图重载运算符+和+ = std :: vector,我做的是

namespace std {
    template<class T>
    vector<T> operator+(vector<T> x, vector<T> y) {
        vector<T> result;
        result.reserve(x.size());
        for (size_t i = 0; i < x.size(); i++)
            result[i] = x[i] + y[i];
        return result;
   }
}
Run Code Online (Sandbox Code Playgroud)

但我认为这是不好的做法,因为clang-tidy警告我"修改std命名空间会导致未定义的行为".在为STL类重载运算符时还有其他更好的做法吗?

c++ vector std

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

如何沿着单个 pytorch 张量的维度连接?

我编写了一个自定义的 pytorch Dataset,该__getitem__()函数返回一个 shape 的张量(250, 150),然后我用来DataLoader生成一批批大小为 10 的数据。我的意图是拥有一个 shape 的批,(2500, 150)作为这 10 个张量沿维度 0 的串联,但输出的DataLoader已有形状(10, 250, 150)。如何将 的输出转换为沿维度 0 串联的DataLoader形状?(2500, 150)

numpy pytorch tensor

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