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

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

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

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

1179閲覧

TensorFlow ver.1.0のプログラムをRで書きたい

51sep

総合スコア22

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2020/10/30 23:34

いくつかのサイトを参照させて頂き、以下のプログラム(TensorFlow Ver.1.0)で希望の結果を得ました。
しかしながら、勉強不足で「tf.global_variables_initializer()」と「for i range()」のところがよく分かりません。
最終的に、このプログラムをRで書きたいのですが、Rでも可能でしょうか。
どなたかアドバイスをお願いいたします。

import tensorflow.compat.v1 as tf tf.disable_v2_behavior() x_data=tf.constant([2,2,2,2,2,3,3,3,3,3,5,5,5,5,5,6,6,6,6,6], dtype='float32') y_data=tf.constant([1,1,0,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,1,0], dtype='float32') a = tf.Variable([1.0])#initial value b = tf.Variable([1.0])#initial value eta = a + b * x_data p = 1/(1+tf.math.exp(-eta)) loss = -tf.reduce_sum((y_data * tf.log(p) + (1 - y_data) * tf.log(1 - p))) train = tf.train.AdamOptimizer(0.001).minimize(loss) init = tf.global_variables_initializer() sess = tf.Session() sess.run(init) for i in range(200001): if i % 5000 == 0: loss_val = sess.run(loss) a_val = sess.run(a) b_val = sess.run(b) sess.run(train) a_val = sess.run(a) b_val = sess.run(b) print(a_val, b_val) #[-2.060754] [0.5151885] ード

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

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

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

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

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

guest

回答1

0

ベストアンサー

R Interface to Tensorflow
があります。
ですが、

「tf.global_variables_initializer()」と「for i range()」のところがよく分かりません。

「tf.global_variables_initializer()」のところはPythonの文法というよりもTensorflowの関数なのでRでもほぼ同じです。これはPython/Rの問題ではなくTensoflowフレームワークの理解が必要です。変数初期化ですね。

「for i range()」はただのループです

Python

1for i in range(200001):

R

1for (i in 1:200001) {

ですね。
Pythonは0からでrangeだと指定した値は含まないのでrange(200001)で0~200000
Rだと通常1からなので上記のように1~200001でよいと思います。

私はRが主ユーザーなのですが、Tensorflowを今後使われるなら余程の理由がない限りPythonで取り扱ったほうがよろしいかと。
Rのインターフェースもありますが、
Tensorflowのバージョンアップにきちんと対応するか不明
なにより、わからないところを聞ける人、コード付きで解説してくれている記事が
Python(めっちゃ多い) >>> R(極めて少ない)
なので。

投稿2020/10/31 03:31

aokikenichi

総合スコア2240

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

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

51sep

2020/10/31 08:06

aokikenichiさん、ご回答をありがとうございました。 ptyhonもRも機械学習も中途半端で苦労しています。 以下、自分でもコアな部分を書いてみましたが、希望の結果が出ません。。 (lossが最小化された時のa,bと言うのはイメージしているのですが) x<-c(2,2,2,2,2,3,3,3,3,3,5,5,5,5,5,6,6,6,6,6) y<-c(1,1,0,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,1,0) a=1 b=1 f<-function(a,b){ eta=a+b*x p=1/(1+exp(-eta)) -sum(y*log(p)+(1-y)*log(1-p)) } for (i in 1:10){ optim<-optim(c(a,b),f,x,y) a<-optim$par[1] b<-optim$par[2] print(sprintf("[%d] (a,b)=(%f,%f)", i, a, b)) }
aokikenichi

2020/11/01 02:40

PythonでなくてRでとのことでしたのでRを書かれる方と思いましたら違うのですね 中途半端ならばあれやこれやと手を出すのではなく、集中して中途半端な状態を克服すればよろしいかと PythonかRで機械学習の本を1冊写経なさったら Tensorflowを扱いたいかつとくにRにこだわりがないならばPython一択でしょう このRで書かれたコードは何でしょうか?質問?
51sep

2020/11/01 07:21

aokikenichiさん、コメントをありがとうございます。 ご指摘のとおりです。。 中途半端に機械学習に手を出して、画像認識でつまづき、数学でつまづき、pythonもRも中途半端。こうして質問しては、皆様に突っ込まれています。。 tensorflowは、とっつきにくくてやっていなかったのですが、たまたまうまくいったプログラムで、少しは”見慣れた”Rでなら、理解できるかと思い、このpythonのプログラムをRで再現したく質問してしまいました。 できれば、質問のpythonのプログラムをRにするため、修正点を質問させて頂きたく思います。 なお、上記コメントのプログラムは意味不明でした。失礼しました。 上記であるならば、普通にoptimでOKでした。 x<-c(2,2,2,2,2,3,3,3,3,3,5,5,5,5,5,6,6,6,6,6) y<-c(1,1,0,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,1,0) f<-function(par){ eta<-par[1]+par[2]*x p<-1/(1+exp(-eta)) -sum(y*log(p)+(1-y)*log(1-p),na.rm=TRUE) } (optim<-optim(c(1,1),f,hessian=TRUE))
KojiDoi

2020/11/01 10:23

「少しは”見慣れた”Rでなら」ということですが、ループの書き方について自力解決できないレベルであれば、まあ五十歩百歩でしょう。 pythonに集中して勉強をすることを勧めます。 現状では明らかにpythonの方がトレンディで書物にしろウェブサイトにしろ充実しています。Rについては教えてくれる人がほとんどいない状況なのは、一介の中級プログラマに過ぎない私がこのteratailのR部門でランキング一位を長期維持できてしまっている事実からも明白です。 Rは対話処理には向いていますが、ある程度以上の長いスクリプトを書こうと思うといろいろ癖があり、デバッグ機能も貧弱で、お世辞にも使いやすい言語ではありません。本質的ではないいろいろなところで問題に引っかかりまくるのは目に見えています。pythonは文法もシンプルでわかりやすく、対話処理もバッチ処理もそつなくこなせるバランスの良い言語です。流行っているのにはそれなりの理由があるというべきでしょう。
51sep

2020/11/01 19:47

KojiDoiさん、コメントをありがとうございました。頑張ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問