當前位置:首頁 » 操作系統 » 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 00:51:56 瀏覽:517
php顯示資料庫中圖片 發布:2025-01-21 00:44:34 瀏覽:145
如何在伺服器中找文件 發布:2025-01-21 00:38:50 瀏覽:910
Cmdpython命令 發布:2025-01-21 00:30:38 瀏覽:758
mac常用解壓 發布:2025-01-21 00:01:47 瀏覽:691
linuxcpu使用 發布:2025-01-21 00:00:59 瀏覽:849
成套供應配電櫃有哪些配置 發布:2025-01-21 00:00:52 瀏覽:120
GO編譯器PDF 發布:2025-01-21 00:00:52 瀏覽:704
osu上傳成績 發布:2025-01-20 23:59:57 瀏覽:641
了解sql 發布:2025-01-20 23:58:39 瀏覽:656