質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

3531閲覧

機械学習のソースコードをアセンブリ変換する。

carnage0216

総合スコア194

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/01/23 13:34

機械学習を学ぶことを始めたのですが、アセンブリコードに変換できるのでしょうか?
機械学習で物体検出を行いたのです。
ただ使うだけで身にならないと思いアセンブリ言語などにして
機械学習のソースコードがどのように動いていたりしているのか勉強したいのですが、アセンブリコードに変換できるのでしょうか?
もしかしたらアセンブリ言語だけでは機械学習のすべてがわかるわけではないと思いますが、どうかよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

機械学習を学びたいのなら、まずしなければならないことは機械学習プログラムのソースを読むことではなく、書店で機械学習の解説書を買ってくることです。
他の質問への回答で同じようなことを書きましたが、ソースを読むには前提となる知識が必要です。コンパイラーのソースを読むならコンパイラーの知識が、カーネルのソースを読むならカーネルの知識が、機械学習のソースを読むなら機械学習の知識が。

投稿2018/01/23 15:16

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/01/24 03:24

解答どうもありがとうございます。
carnage0216

2018/01/24 03:30

将来、一から機械学習のプログラムを作りたいと思った時に、アセンブリ言語から書かなくてはならないと思い、今回の質問を致しました。
catsforepaw

2018/01/24 04:02

今となっては、よほど特殊な事情がない限りアセンブリ言語でプログラムを書くなどということは、まずやりません。そうする価値がほとんどないからです。そして、機械学習のプログラムを作ること、そして利用することは、その特殊な事情には当てはまりません。それなりにプログラミングをこなせるようになれば気づくことです。 つまり、それすら判らない状態で目標を先取りしようとしていることで、かえって目標から遠ざかってしまっています。 「私は将来優秀な外科医になることを目指す。そのためにはメスさばきがうまくなければいけない。その練習をしたいがどうすれば良いか?」と聞いているようなものです。外科医を目指すならまずは医学を学ばないと。 きちんと段階を踏むことが大事です。
carnage0216

2018/01/24 05:17

無知ゆえに大変恥ずかしい質問をしてしまいました。 確かにおっしゃる通りです。 最後に、機械学習のソースコード自体を作り上げた人、あるいは研究者はC言語やpythonの標準ライブラリなどの関数を組み合わせて作ったのでしょうか?
catsforepaw

2018/01/24 05:28 編集

もちろんその通りです。研究者たちにとってプログラムは自身の理論の具現化であり、できればたくさんの人に知ってもらいたい、使ってもらいたいと思っているでしょうから、できる限り標準的な環境でコンパイル・実行できるように作るはずです。ただし、場合によっては標準ライブラリーだけでなく外部ライブラリーを利用しているかもしれません。その場合でも、誰もが利用できるようなオープンソースのライブラリーを使っていると思います。
carnage0216

2018/01/24 06:05

そうなのですね! 理論や数式が紙に書いただけの物で終わらず、具現化して目に見える形となり、自分や誰かの役に立ったりできるのは大変素晴らしいですよね。 だとしたら、アセンブリ言語ではなく、標準ライブラリを勉強したりする方が良いですね。 ちなみに、本屋で標準ライブラリなどで機械学習のソースコードを実装したりする本を買ってきます。 C言語の機械学習において、私のような初心者に向いた機械学習の実装のおススメの本などはあるでしょうか? 差し支えなければ教えていただきたいです。
catsforepaw

2018/01/24 06:30

機械学習に関しては残念ながら知見がないので私には何がお勧めかは判りません。おそらくグーグル先生の方が的確に教えてくれると思います。あるいは、Amazonで売れ筋をチェックしてみるのも良いかもしれません。私としては書店で立ち読みして理解できそうかどうかで判断することをお勧めします。
carnage0216

2018/01/24 06:32

どうもありがとうございます。書店で読んでわかりやすいのを見つけてきます。
guest

0

こんにちは。

「機械学習のソースコード」がCやC++で書かれていたら、殆どのC/C++コンパイラはアセンブラコードを出力できますので、変換可能です。

しかし、折角高級言語で書かれた「機械学習のソースコード」をお持ちなのであれば、アセンブラコードへ変換しないで読んだほうが遥かに速いですよ。

投稿2018/01/23 13:43

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/01/23 13:57

回答ありがとうございます。 機械学習のソースコードは持っていません。 アセンブラコードへ変換してしまうと逆にわかりにくくなってしまうのでしょうか?
yumetodo

2018/01/23 14:06

まず何をやっているかはわからなくなるでしょうね。
yumetodo

2018/01/23 14:07

アセンブリを読むことのこんにちにおける意義は、最適化をする上で、コンパイラがどのようなコードを吐くかを評価することであると考えます。
carnage0216

2018/01/23 14:07

なるほど、アセンブリコードではあまりにも長く複雑すぎて混乱するわけですね。
yumetodo

2018/01/23 14:23

>機械学習のソースコードは持っていません。 ん、ちょっとまった、これはどういうことだ・・・?ソースコードがないなんてあり得るだろうか・・・?それともbinaryを逆アセンブルしようとしている・・・?LICENSEによってはリバースエンジニアリングを禁止していますよ!
Chironian

2018/01/23 14:51

yumetodoさん、フォローありがとう。 carnage0216さん、yumetodoさんが書いている通りです。 ところで、ソースコード持ってないのに「機械学習のソースコードをアセンブリ変換する。」は不可能では?
carnage0216

2018/01/23 14:55

はい。不可能です。 opencvなどで無料で配布されている機械学習や特徴量抽出のプログラムが手に入ったらアセンブリコード化しようと考えています。わかりにくくて申し訳ありませんでした。
Chironian

2018/01/23 15:18

なるほど。 ならば、入手できたらアセンブリへ変換することなく、高級言語のまま解読することをお勧めします。 ちなみに、gccならSオプションでアセンブリコードを出力できます。 http://nanoappli.com/blog/archives/3899
carnage0216

2018/01/24 03:31

ご親切に解答して下さりありがとうございます。
guest

0

アセンブリ言語を読めばコンパイラやCPUの動作に関しては理解が深まるかもしれませんが、「機械学習のコードがどう実行されているか知りたい」のであれば、単に「機械学習ライブラリのソースコード」を読めば十分です。

例えばDeepLearningの動作原理について詳しく知りたい場合、ゼロから作るDeepLeaening(オライリー出版)を読むととてもよく分かります。

アセンブリ言語を読んで機械学習の仕組みを学習することは(機械語を脳内でデコンパイルできない限り)できません。

投稿2018/01/23 15:06

mtdsnsk

総合スコア789

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/01/24 03:30

詳しい解説、どうもありがとうございます。
guest

0

機械学習の仕組みを知るには、プログラムから入るのではなく、
機械学習の手法ごとの概念とやりたいこと等を先に勉強してからのほうが良いかと思います。

プログラムを自分で書きたい場合は、今ですと、フレームワークを使用して機械学習を行う方が多いかと思います。
「機械学習 フレームワーク」等で調べるといくつも出てくると思います。

有名なのは、Caffe, Chainer, TensorFlow, Torchとかでしょうか
自分はC言語ならCaffe, PythonでChainerを少し構いました。

投稿2018/01/25 00:57

taashi

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/01/25 04:59

最近ではTennsorflowもC++に対応するようなので、caffeとdarknetを一年後くらいに勉強しようと考えています。
taashi

2018/01/25 05:03

機械学習 = DeepLearning ということでしたら、 最初は、基礎的なAEやCNNを勉強(Layerの種類と各Layerの役目等も勉強できる)してから、 その他のNeuralNetworkを勉強すると良いかと思います。
taashi

2018/01/25 05:03

AE = Auto Encoder CNN = Convolutional NeuralNetwork です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問