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

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

ただいまの
回答率

90.75%

  • Python

    6803questions

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

  • Python 3.x

    5275questions

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

  • C

    3444questions

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

  • C++

    3239questions

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

  • Python 2.7

    1202questions

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

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

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 799

carnage0216

score 120

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

+11

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/24 12:24

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

    キャンセル

  • 2018/01/24 12:30

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

    キャンセル

  • 2018/01/24 13:02

    今となっては、よほど特殊な事情がない限りアセンブリ言語でプログラムを書くなどということは、まずやりません。そうする価値がほとんどないからです。そして、機械学習のプログラムを作ること、そして利用することは、その特殊な事情には当てはまりません。それなりにプログラミングをこなせるようになれば気づくことです。
    つまり、それすら判らない状態で目標を先取りしようとしていることで、かえって目標から遠ざかってしまっています。

    「私は将来優秀な外科医になることを目指す。そのためにはメスさばきがうまくなければいけない。その練習をしたいがどうすれば良いか?」と聞いているようなものです。外科医を目指すならまずは医学を学ばないと。

    きちんと段階を踏むことが大事です。

    キャンセル

  • 2018/01/24 14:17

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

    キャンセル

  • 2018/01/24 14:28 編集

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

    キャンセル

  • 2018/01/24 15:05

    そうなのですね!
    理論や数式が紙に書いただけの物で終わらず、具現化して目に見える形となり、自分や誰かの役に立ったりできるのは大変素晴らしいですよね。

    だとしたら、アセンブリ言語ではなく、標準ライブラリを勉強したりする方が良いですね。

    ちなみに、本屋で標準ライブラリなどで機械学習のソースコードを実装したりする本を買ってきます。
    C言語の機械学習において、私のような初心者に向いた機械学習の実装のおススメの本などはあるでしょうか?
    差し支えなければ教えていただきたいです。

    キャンセル

  • 2018/01/24 15:30

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

    キャンセル

  • 2018/01/24 15:32

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

    キャンセル

+7

こんにちは。

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/23 22:57

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

    キャンセル

  • 2018/01/23 23:06

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

    キャンセル

  • 2018/01/23 23:07

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

    キャンセル

  • 2018/01/23 23:07

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

    キャンセル

  • 2018/01/23 23:23

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

    キャンセル

  • 2018/01/23 23:51

    yumetodoさん、フォローありがとう。

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

    キャンセル

  • 2018/01/23 23:55

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

    キャンセル

  • 2018/01/24 00:18

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

    キャンセル

  • 2018/01/24 12:31

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

    キャンセル

+2

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/24 12:30

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

    キャンセル

0

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/25 13:59

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

    キャンセル

  • 2018/01/25 14:03

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

    キャンセル

  • 2018/01/25 14:03

    AE = Auto Encoder
    CNN = Convolutional NeuralNetwork
    です。

    キャンセル

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

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    アセンブリ

    アセンブリ言語で質問があります。 C言語のプログラムをコンパイルした際に出てくるアセンブリ言語の一部なんですが、main()前の初期化の箇所で以下のような部分がありました。

  • 解決済

    解決済み

    以下の英語での動作をするようなプログラムを作れと言われてるんですが、ポインタとスタックの意味がよくわかりません。よければ教えてほしいです。

  • 解決済

    macでOSを作る際の環境設定

    macで自分でosを作りたいのですが環境設定をどうすれば良いのかよくわからないので、教えてください。

  • 解決済

    ダイナミックリンク、遅延BIND、GOTを追う

    簡単なコードで考察します。 #include<stdio.h> int main(){ int c = 1000; printf("Technology%d

  • 解決済

    Hello World を表示させたい

    前提・実現したいこと ここに質問したいことを詳細に書いてください アセンブリ言語を用いて「Hello World!」と表示させるプログラムを作成しようとしていました 機能を実装中に

  • 解決済

    nasm システムコールの疑問

    自分はnasm 16bit のプログラミングを勉強したものです 今はnasm 32bitをubuntuの端末で動かそうとしているのですが nasm16bitではシステムコールがin

  • 解決済

    ただファイルを開くだけのプログラム

    Ubuntuの端末で動くアセンブリ言語のただファイルを開くだけのシステムを作ってみましたが実行コアダンプが発生します。 具体的には開くだけのシステム+開けたかどうか表示をするプログ

  • 解決済

    アセンブラ言語における「ラベル」とは何なんでしょうか?初心者でもわかりやすいように教えてください。

    1週間で学ぶIT基礎の基礎 - 【5分で覚えるIT基礎の基礎】だれでも一度はアセンブラを学んでおこう! 第2回:ITproのページに ラベルとは,アセンブラのプログラムの

同じタグがついた質問を見る

  • Python

    6803questions

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

  • Python 3.x

    5275questions

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

  • C

    3444questions

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

  • C++

    3239questions

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

  • Python 2.7

    1202questions

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