小编Ers*_* Er的帖子

如何在C中使用Linux共享内存

我的一个项目有点问题.

我一直试图找到一个记录良好的使用共享内存的例子,fork()但没有成功.

基本上情况是,当用户启动程序时,我需要在共享内存中存储两个值:current_pathchar*,file_name也是char*.

根据命令参数,启动一个新进程fork(),该进程需要读取和修改存储在共享内存中的current_path变量,而file_name变量是只读的.

是否有一个很好的共享内存教程和示例代码(如果可能的话),你可以指导我?

谢谢,哔哔声

c linux fork shared-memory

110
推荐指数
5
解决办法
29万
查看次数

训练文本语料库太大而无法加载到内存中

我创建了一个 2 层 LSTM 模型,我想在最近转储的英文维基百科文章(15.1 GB 文本)上对其进行训练。我无法将语料库加载到文本变量中以进行单词嵌入。Keras RNN 模型通常如何在如此庞大的文本语料库上进行训练以避免内存错误?

尝试使用以下命令打开 15.1 GB 文件后:

text = open('/home/connor/Desktop/wiki_en.txt').read().lower()
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

(结果,消耗)= self._buffer_decode(数据,self.errors,最终)MemoryError

python out-of-memory lstm keras recurrent-neural-network

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

softmax 函数的实现为高输入返回 nan

在此处输入图片说明

我试图在 cnn 的末尾实现 softmax,我得到的输出是 nan 和 zeros。我给 softmax 大约 10-20k 的高输入值我给了一个数组X=[2345,3456,6543,-6789,-9234]

我的功能是

def softmax (X):
    B=np.exp(X)
    C=np.sum(np.exp(X))
    return B/C
Run Code Online (Sandbox Code Playgroud)

我收到错误 true divide and run time error

C:\Anaconda\envs\deep_learning\lib\site-packages\ipykernel_launcher.py:4: RuntimeWarning: invalid value encountered in true_divide
  after removing the cwd from sys.path.
Run Code Online (Sandbox Code Playgroud)

python softmax

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

熊猫只更改 dtypes 的 float64 列

我需要更改多列(超过 400)的 dtype,但数据框具有不同类型的 dtype。一些列 dtypes 是,float64而一些列是int64or object

print my_df.dtypes
Run Code Online (Sandbox Code Playgroud)

输出:

x1                       int64
x2                       int64
x3                       object
x4                       float64
x5                       float64
x6                       float64
x7                       float64
...

x400                     object
x401                     object
x402                     object
...
Run Code Online (Sandbox Code Playgroud)

我需要全部更改int64int8orint16并且也全部更改float64float32。我试过下面的代码片段,但没有奏效:

my_df[my_df.dtypes == np.int64].astype(np.int16)
my_df[my_df.dtypes == np.float64].astype(np.float32)
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。

提前致谢。

python pandas

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

二维 numpy 数组中行或列最常见的元素

我试图找到二维 numpy 数组中最常见的元素。我想要它们按行或按列。我搜索了文档和网络,但找不到我正在寻找的内容。让我用一个例子来解释一下;假设我有arr如下:

import numpy as np
arr = np.random.randint(0, 2, size=(5, 2))
arr

# Output
array([[1, 1],
       [0, 0],
       [0, 1],
       [1, 1],
       [1, 0]])
Run Code Online (Sandbox Code Playgroud)

预期输出是一个数组,其中包含列或行中最常见的元素,具体取决于给定的axis输入。我知道np.unique()返回给定输入数组中每个唯一值的计数axis。因此,它计算二维数组中唯一的行或列:

np.unique(arr, return_counts=True, axis=0)

# Output
(array([[0, 0],
       [0, 1],
       [1, 0],
       [1, 1]]), array([1, 1, 1, 2]))
Run Code Online (Sandbox Code Playgroud)

因此,它表明唯一元素[0, 0][0, 1][1, 0]出现一次,而[1, 1]在 中出现两次arr。这对我不起作用。因为我需要查看行(或列)中最常见的元素。所以我的预期输出如下:

array([[1, 1],    # --> 1
       [0, 0],    # --> 0
       [0, 1], …
Run Code Online (Sandbox Code Playgroud)

python numpy multidimensional-array

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

对memcpy和mmap的误解

我需要在进程之间使用共享内存,我在这里找到了一个示例代码.首先,我需要学习如何创建共享内存块并在其中存储字符串.为此,我使用以下代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <string.h>
#include <unistd.h>

void* create_shared_memory(size_t size) {
  // Our memory buffer will be readable and writable:
  int protection = PROT_READ | PROT_WRITE;

  // The buffer will be shared (meaning other processes can access it), but
  // anonymous (meaning third-party processes cannot obtain an address for it),
  // so only this process and its children will be able to use it:
  int visibility = MAP_ANONYMOUS | MAP_SHARED;

  // The remaining parameters …
Run Code Online (Sandbox Code Playgroud)

c mmap memcpy

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