R中向量化和并行化的一般问题

R中向量化和并行化的一般问题,r,tensorflow,R,Tensorflow,我是R新手,但我想理解并在Rstudio中使用TensorFlow生成快速代码。 我理解并行化的概念,但我在理解这些概念之间的差异时遇到了一些问题:并行化、向量化和时态化(对不起我的英语)。 我想要一些简单的例子来理解这些差异。 我可以同时应用所有这些概念吗 这里是我关于R中并行化和矢量化的两分钱。我不会讨论TensorFlow,因为我没有太多TensorFlow的经验。然而,有微分几何的背景,我最好的猜测是,这意味着使用张量,即高维(数据)结构来解决某些问题 并行化 并行化的基本思想是同时运行

我是R新手,但我想理解并在Rstudio中使用TensorFlow生成快速代码。 我理解并行化的概念,但我在理解这些概念之间的差异时遇到了一些问题:并行化、向量化和时态化(对不起我的英语)。 我想要一些简单的例子来理解这些差异。
我可以同时应用所有这些概念吗

这里是我关于R中并行化和矢量化的两分钱。我不会讨论TensorFlow,因为我没有太多TensorFlow的经验。然而,有微分几何的背景,我最好的猜测是,这意味着使用张量,即高维(数据)结构来解决某些问题

并行化 并行化的基本思想是同时运行任务。通常情况下,特别是在R中实现时,这个概念是通过多处理来处理的:通常这会将任务分配给计算机的CPU(或者线程看到多线程或检查这一点)。此外,并行化可以被视为解决并发问题的一种方法:后者还有其他实现,比如异步编程

并行化(以及并发性)的典型示例如下:假设您有一个URL列表
url1、url2、…
,并且需要向每个URL发送GET请求(并等待响应)。经典的(同步)方法是迭代所有URL,发出GET请求,等待响应,然后(并且只有在那时)继续下一个URL

# Dummy example list
urls <- rep('http://example.com', 7)
# Fetching the data
results <- rep(list(NA), length(urls))
for (k in seq_along(urls))
  results[[k]] <- httr::GET(urls[k])
这里的底线是,矢量化在R中的每个角落(大部分)都有,在我看来,这是R优雅的本质和最漂亮的特性(自定义操作符也很整洁)。例如,可以使用一个内衬创建sin:

f <- function(x, n = 10) sum((-1)^(0:n) * x^(2*(0:n) + 1) / factorial((2*(0:n) + 1)))
f(0)
# 0
f(pi)
# 1.034819e-11

f这里是我对R中的并行化和向量化的两分钱。我不会讨论TensorFlow,因为我对TensorFlow没有太多经验。然而,有微分几何的背景,我最好的猜测是,这意味着使用张量,即高维(数据)结构来解决某些问题

并行化 并行化的基本思想是同时运行任务。通常情况下,特别是在R中实现时,这个概念是通过多处理来处理的:通常这会将任务分配给计算机的CPU(或者线程看到多线程或检查这一点)。此外,并行化可以被视为解决并发问题的一种方法:后者还有其他实现,比如异步编程

并行化(以及并发性)的典型示例如下:假设您有一个URL列表
url1、url2、…
,并且需要向每个URL发送GET请求(并等待响应)。经典的(同步)方法是迭代所有URL,发出GET请求,等待响应,然后(并且只有在那时)继续下一个URL

# Dummy example list
urls <- rep('http://example.com', 7)
# Fetching the data
results <- rep(list(NA), length(urls))
for (k in seq_along(urls))
  results[[k]] <- httr::GET(urls[k])
这里的底线是,矢量化在R中的每个角落(大部分)都有,在我看来,这是R优雅的本质和最漂亮的特性(自定义操作符也很整洁)。例如,可以使用一个内衬创建sin:

f <- function(x, n = 10) sum((-1)^(0:n) * x^(2*(0:n) + 1) / factorial((2*(0:n) + 1)))
f(0)
# 0
f(pi)
# 1.034819e-11

f矢量化:
vec矢量化:
vec谢谢,这是一个很棒的答案。现在我得到了这两个概念:矢量化和并行化。但我还是不明白张紧的目的。谢谢你,这是一个很棒的答案。现在我得到了这两个概念:矢量化和并行化。但我还是不明白张拉的目的。