当前位置:首页 » 操作系统 » rnn源码

rnn源码

发布时间: 2022-07-20 01:18:10

⑴ 数据挖掘工程师一般都做什么

数据挖掘工程师是做什么的?

数据挖掘,从字面上理解,就是在数据中找到有用的东西,哪些东西有用就要看具体的业务目标了。最简单的就是统计应用了,比如电商数据,如淘宝统计过哪个省购买泳衣最多、哪个省的女生胸罩最大等,进一步,可以基于用户的浏览、点击、收藏、购买等行为推断用户的年龄、性别、购买能力、爱好等能表示一个人的画像,就相当于用这些挖掘出来的属性来刻画一个人,这些还是最简单的东西,更深层次的比如预测(股票预测),但是比较难。

数据挖掘往往与机器学习离不开。比如分类、聚类、关联规则挖掘、个性化推荐、预测、神经网络、深度学习等。

数据挖掘 = 业务知识 + 自然语言处理技术( NLP ) + 计算机视觉技术( CV ) + 机器学习 / 深度学习( ML/DL )

( 1 )其中业务知识具体指的是个性化推荐,计算广告,搜索,互联网金融等; NLP , CV 分别是处理文本,图像视频数据的领域技术,可以理解为是将非结构化数据提取转换成结构化数据;最后的ml/dl 技术则是属于模型学习理论;

( 2 )在选择岗位时,各个公司都没有一套标准的称呼,但是所做的事情无非 2 个大方向,一种是主要钻研某个领域的技术,比如自然语言处理工程师,计算机视觉工程师,机器学习工程师等;一种是将各种领域技术应用到业务场景中去解决业务需求,比如数据挖掘工程师,推荐系统工程师等;具体的称呼不重要,重要的是平时的工作内容;

PS :在互联网行业,数据挖掘相关技术应用比较成功的主要是推荐以及计算广告领域,而其中涉及到的数据主要也是文本,所以 NLP 技术相对来讲比较重要,至于 CV 技术主要还是在人工智能领域(无人车,人脸识别等)应用较多,本人了解有限,相关的描述会较少;

数据挖掘岗位需要具备的3 种基本能力

1. 工程能力

( 1 )编程基础:需要掌握一大一小两门语言,大的指 C++ 或者 java ,小的指 python 或者 shell 脚本;需要掌握基本的数据库语言;

建议: MySQL + python + C++ ;语言只是一种工具,看看语法就好;

推荐书籍:《 C++ primer plus 》

( 2 )开发平台: Linux ;

建议:掌握常见的命令,掌握 Linux 下的源码编译原理;

推荐书籍:《 Linux 私房菜》

( 3 )数据结构与算法分析基础:掌握常见的数据结构以及操作(线性表,队,列,字符串,树,图等),掌握常见的计算机算法(排序算法,查找算法,动态规划,递归等);

建议:多敲代码,多上 OJ 平台刷题;

推荐书籍:《大话数据结构》《剑指 offer 》

( 4 )海量数据处理平台: Hadoop ( mr 计算模型, java 开发)或者 Spark ( rdd 计算模型, scala开发),重点推荐后者;

建议:主要是会使用,有精力的话可以看看源码了解集群调度机制之类的;

推荐书籍:《大数据 spark 企业级实战》

2. 算法能力

( 1 )数学基础:概率论,数理统计,线性代数,随机过程,最优化理论

建议:这些是必须要了解的,即使没法做到基础扎实,起码也要掌握每门学科的理论体系,涉及到相应知识点时通过查阅资料可以做到无障碍理解;

( 2 )机器学习 / 深度学习:掌握 常见的机器学习模型(线性回归,逻辑回归, SVM ,感知机;决策树,随机森林, GBDT , XGBoost ;贝叶斯, KNN , K-means , EM 等);掌握常见的机器学习理论(过拟合问题,交叉验证问题,模型选择问题,模型融合问题等);掌握常见的深度学习模型( CNN ,RNN 等);

建议:这里的掌握指的是能够熟悉推导公式并能知道模型的适用场景;

推荐书籍:《统计学习方法》《机器学习》《机器学习实战》《 UFLDL 》

( 3 )自然语言处理:掌握常见的方法( tf-idf , word2vec , LDA );

3. 业务经验

( 1 )了解推荐以及计算广告相关知识;

推荐书籍:《推荐系统实践》《计算广告》

( 2 )通过参加数据挖掘竞赛熟悉相关业务场景,常见的比赛有 Kaggle ,阿里天池, datacastle 等。

想要学习数据挖掘的话可以看一下这篇文章《AI时代就业指南:数据挖掘入门与求职》

⑵ 小白学python怎么快速入门多久能完成一个项目

电子书集合|数据科学速查表|迁移学习实战 ,免费下载

链接: https://pan..com/s/11qnpoLX1H_XzFB-RdVNG4w 提取码: z9x7


⑶ 如何用TensorFlow构建RNN

如果从源码构建TensorFlow会需要执行如下命令:bazelbuild-copt//tensorflow/tools/pip_package:build_pip_package对应的BUILD文件的rule为:sh_binary(name="build_pip_package",srcs=["build_pip_package.sh"],data=["MANIFEST.in","README","setup.py","//tensorflow/core:framework_headers",":other_headers",":simple_console","//tensorflow:tensorflow_py","//tensorflow/examples/tutorials/mnist:package","//tensorflow/models/embedding:package","//tensorflow/models/image/cifar10:all_files","//tensorflow/models/image/mnist:convolutional","//tensorflow/models/rnn:package","//tensorflow/models/rnn/ptb:package","//tensorflow/models/rnn/translate:package","//tensorflow/tensorboard",],)

⑷ 如何学习TensorFlow源码

如果从源码构建TensorFlow会需要执行如下命令:
bazel build -c opt //tensorflow/tools/pip_package:build_pip_package

对应的BUILD文件的rule为:
sh_binary(
name = "build_pip_package",
srcs = ["build_pip_package.sh"],
data = [
"MANIFEST.in",
"README",
"setup.py",
"//tensorflow/core:framework_headers",
":other_headers",
":simple_console",
"//tensorflow:tensorflow_py",
"//tensorflow/examples/tutorials/mnist:package",
"//tensorflow/models/embedding:package",
"//tensorflow/models/image/cifar10:all_files",
"//tensorflow/models/image/mnist:convolutional",
"//tensorflow/models/rnn:package",
"//tensorflow/models/rnn/ptb:package",
"//tensorflow/models/rnn/translate:package",
"//tensorflow/tensorboard",
],
)

sh_binary在这里的主要作用是生成data的这些依赖。一个一个来看,一开始的三个文件MANIFEST.in、README、setup.py是直接存在的,因此不会有什么操作。
“//tensorflow/core:framework_headers”:其对应的rule为:
filegroup(
name = "framework_headers",
srcs = [
"framework/allocator.h",
......
"util/device_name_utils.h",
],
)

这里filegroup的作用是给这一堆头文件一个别名,方便其他rule引用。
“:other_headers”:rule为:
transitive_hdrs(
name = "other_headers",
deps = [
"//third_party/eigen3",
"//tensorflow/core:protos_all_cc",
],
)

transitive_hdrs的定义在:
load("//tensorflow:tensorflow.bzl", "transitive_hdrs")

实现为:
# Bazel rule for collecting the header files that a target depends on.
def _transitive_hdrs_impl(ctx):
outputs = set()
for dep in ctx.attr.deps:
outputs += dep.cc.transitive_headers
return struct(files=outputs)

_transitive_hdrs = rule(attrs={
"deps": attr.label_list(allow_files=True,
providers=["cc"]),
},
implementation=_transitive_hdrs_impl,)

def transitive_hdrs(name, deps=[], **kwargs):
_transitive_hdrs(name=name + "_gather",
deps=deps)
native.filegroup(name=name,
srcs=[":" + name + "_gather"])

其作用依旧是收集依赖需要的头文件。
“:simple_console”:其rule为:
py_binary(
name = "simple_console",
srcs = ["simple_console.py"],
srcs_version = "PY2AND3",
deps = ["//tensorflow:tensorflow_py"],
)
py_library(
name = "tensorflow_py",
srcs = ["__init__.py"],
srcs_version = "PY2AND3",
visibility = ["//visibility:public"],
deps = ["//tensorflow/python"],
)

simple_console.py的代码的主要部分是:
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import code
import sys

def main(_):
"""Run an interactive console."""
code.interact()
return 0

if __name__ == '__main__':
sys.exit(main(sys.argv))

可以看到起通过deps = [“//tensorflow/python”]构建了依赖包,然后生成了对应的执行文件。看下依赖的rule规则。//tensorflow/python对应的rule为:
py_library(
name = "python",
srcs = [
"__init__.py",
],
srcs_version = "PY2AND3",
visibility = ["//tensorflow:__pkg__"],
deps = [
":client",
":client_testlib",
":framework",
":framework_test_lib",
":kernel_tests/gradient_checker",
":platform",
":platform_test",
":summary",
":training",
"//tensorflow/contrib:contrib_py",
],
)

这里如果仔细看的话会发现其主要是生成一堆python的模块。从这里貌似可以看出每个python的mole都对应了一个rule,且mole依赖的mole都写在了deps里。特别的,作为一个C++的切入,我们关注下training这个依赖:
py_library(
name = "training",
srcs = glob(
["training/**/*.py"],
exclude = ["**/*test*"],
),
srcs_version = "PY2AND3",
deps = [
":client",
":framework",
":lib",
":ops",
":protos_all_py",
":pywrap_tensorflow",
":training_ops",
],
)

这里其依赖的pywrap_tensorflow的rule为:
tf_py_wrap_cc(
name = "pywrap_tensorflow",
srcs = ["tensorflow.i"],
swig_includes = [
"client/device_lib.i",
"client/events_writer.i",
"client/server_lib.i",
"client/tf_session.i",
"framework/python_op_gen.i",
"lib/core/py_func.i",
"lib/core/status.i",
"lib/core/status_helper.i",
"lib/core/strings.i",
"lib/io/py_record_reader.i",
"lib/io/py_record_writer.i",
"platform/base.i",
"platform/numpy.i",
"util/port.i",
"util/py_checkpoint_reader.i",
],
deps = [
":py_func_lib",
":py_record_reader_lib",
":py_record_writer_lib",
":python_op_gen",
":tf_session_helper",
"//tensorflow/core/distributed_runtime:server_lib",
"//tensorflow/core/distributed_runtime/rpc:grpc_server_lib",
"//tensorflow/core/distributed_runtime/rpc:grpc_session",
"//util/python:python_headers",
],
)

tf_py_wrap_cc为其自己实现的一个rule,这里的.i就是SWIG的interface文件。来看下其实现:
def tf_py_wrap_cc(name, srcs, swig_includes=[], deps=[], copts=[], **kwargs):
mole_name = name.split("/")[-1]
# Convert a rule name such as foo/bar/baz to foo/bar/_baz.so
# and use that as the name for the rule procing the .so file.
cc_library_name = "/".join(name.split("/")[:-1] + ["_" + mole_name + ".so"])
extra_deps = []
_py_wrap_cc(name=name + "_py_wrap",
srcs=srcs,
swig_includes=swig_includes,
deps=deps + extra_deps,
mole_name=mole_name,
py_mole_name=name)
native.cc_binary(
name=cc_library_name,
srcs=[mole_name + ".cc"],
copts=(copts + ["-Wno-self-assign", "-Wno-write-strings"]
+ tf_extension_copts()),
linkopts=tf_extension_linkopts(),
linkstatic=1,
linkshared=1,
deps=deps + extra_deps)
native.py_library(name=name,
srcs=[":" + name + ".py"],
srcs_version="PY2AND3",
data=[":" + cc_library_name])

按照SWIG的正常流程,先要通过swig命令生成我们的wrap的c文件,然后和依赖生成我们的so文件,最后生成一个同名的python文件用于import。这里native.cc_binary和native.py_library做了我们后面的两件事情,而swig命令的执行则交给了_py_wrap_cc。其实现为:
_py_wrap_cc = rule(attrs={
"srcs": attr.label_list(mandatory=True,
allow_files=True,),
"swig_includes": attr.label_list(cfg=DATA_CFG,
allow_files=True,),
"deps": attr.label_list(allow_files=True,
providers=["cc"],),
"swig_deps": attr.label(default=Label(
"//tensorflow:swig")), # swig_templates
"mole_name": attr.string(mandatory=True),
"py_mole_name": attr.string(mandatory=True),
"swig_binary": attr.label(default=Label("//tensorflow:swig"),
cfg=HOST_CFG,
executable=True,
allow_files=True,),
},
outputs={
"cc_out": "%{mole_name}.cc",
"py_out": "%{py_mole_name}.py",
},
implementation=_py_wrap_cc_impl,)

_py_wrap_cc_impl的实现为:
# Bazel rules for building swig files.
def _py_wrap_cc_impl(ctx):
srcs = ctx.files.srcs
if len(srcs) != 1:
fail("Exactly one SWIG source file label must be specified.", "srcs")
mole_name = ctx.attr.mole_name
cc_out = ctx.outputs.cc_out
py_out = ctx.outputs.py_out
src = ctx.files.srcs[0]
args = ["-c++", "-python"]
args += ["-mole", mole_name]
args += ["-l" + f.path for f in ctx.files.swig_includes]
cc_include_dirs = set()
cc_includes = set()
for dep in ctx.attr.deps:
cc_include_dirs += [h.dirname for h in dep.cc.transitive_headers]
cc_includes += dep.cc.transitive_headers
args += ["-I" + x for x in cc_include_dirs]
args += ["-I" + ctx.label.workspace_root]
args += ["-o", cc_out.path]
args += ["-outdir", py_out.dirname]
args += [src.path]
outputs = [cc_out, py_out]
ctx.action(executable=ctx.executable.swig_binary,
arguments=args,
mnemonic="PythonSwig",
inputs=sorted(set([src]) + cc_includes + ctx.files.swig_includes +
ctx.attr.swig_deps.files),
outputs=outputs,
progress_message="SWIGing {input}".format(input=src.path))
return struct(files=set(outputs))

这里的ctx.executable.swig_binary是一个shell脚本,内容为:
# If possible, read swig path out of "swig_path" generated by configure
SWIG=swig
SWIG_PATH=tensorflow/tools/swig/swig_path
if [ -e $SWIG_PATH ]; then
SWIG=`cat $SWIG_PATH`
fi

# If this line fails, rerun configure to set the path to swig correctly
"$SWIG" "$@"

可以看到起就是调用了swig命令。
“//tensorflow:tensorflow_py”:其rule为:
py_library(
name = "tensorflow_py",
srcs = ["__init__.py"],
srcs_version = "PY2AND3",
visibility = ["//visibility:public"],
deps = ["//tensorflow/python"],
)

⑸ 如何高效的学习 TensorFlow 代码

如果从源码构建TensorFlow会需要执行如下命令:
bazel build -c opt //tensorflow/tools/pip_package:build_pip_package

对应的BUILD文件的rule为:
sh_binary(
name = "build_pip_package",
srcs = ["build_pip_package.sh"],
data = [
"MANIFEST.in",
"README",
"setup.py",
"//tensorflow/core:framework_headers",
":other_headers",
":simple_console",
"//tensorflow:tensorflow_py",
"//tensorflow/examples/tutorials/mnist:package",
"//tensorflow/models/embedding:package",
"//tensorflow/models/image/cifar10:all_files",
"//tensorflow/models/image/mnist:convolutional",
"//tensorflow/models/rnn:package",
"//tensorflow/models/rnn/ptb:package",
"//tensorflow/models/rnn/translate:package",
"//tensorflow/tensorboard",
],
)

⑹ 目前有什么利用深度学习构建的聊天机器人

rnn, 网上有源码。

热点内容
微信视频如何重新缓存 发布:2025-01-21 04:44:41 浏览:879
pdf压缩文件大小 发布:2025-01-21 04:40:24 浏览:798
linux解压文件到指定 发布:2025-01-21 04:38:36 浏览:874
自己做的安卓app怎么下载 发布:2025-01-21 04:35:07 浏览:163
机顶盒加密频道 发布:2025-01-21 04:26:48 浏览:318
腾讯应用加密 发布:2025-01-21 04:24:38 浏览:988
无法访问f 发布:2025-01-21 04:24:36 浏览:539
sql实时 发布:2025-01-21 04:24:27 浏览:998
怎么在linux服务器上配ip地址 发布:2025-01-21 04:22:10 浏览:251
咖搭姆编程 发布:2025-01-21 04:19:45 浏览:674