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

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

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

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python

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

Q&A

0回答

423閲覧

pythonでの機械学習

tubusio

総合スコア11

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python

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

0グッド

0クリップ

投稿2019/05/21 08:08

編集2022/01/12 10:55

前提・実現したいこと

pythonで機械学習のプログラムを作るうえで
一変数ではなく、多変数のデータを読み込んで実行したい

一変数でのプログラムは作って実行もできたので、そこに何かを付け足せばいいのか
または新しく作り直さなければならないのかを知りたく、またそうするにはどうすればいいかを教えてほしいです

該当のソースコード

python

1import tensorflow as tf 2import numpy as np 3import random 4 5 6num_of_input_nodes = 1 7num_of_hidden_nodes = 80 8num_of_output_nodes = 1 9length_of_sequences = 10 ← 学習・識別時の時系列データ数(area.txtとarea2.txtの列数) 10num_of_training_epochs = 5000 ← 学習回数 11size_of_mini_batch = 10 12num_of_prediction_epochs = 107 ← 識別ファイル(area2.txtとseikai2.txtの行数) 13learning_rate = 0.01 14forget_bias = 0.8 15num_of_sample = 109 ← 学習ファイル(area.txtとseikai.txtの行数) 16 17 18def get_batch(batch_size, X, t): 19 rnum = [random.randint(0, len(X) - 1) for x in range(batch_size)] 20 xs = np.array([[[y] for y in list(X[r])] for r in rnum]) 21 ts = np.array([[t[r]] for r in rnum]) 22 return xs, ts 23 24 25def create_data(nb_of_samples, sequence_len): 26 X = np.loadtxt('area.txt') ← 学習データファイルの読込み 27 t = np.loadtxt('seikai.txt') ← 学習正解値ファイルの読込み 28 print(X) 29 print(t) 30 return X, t 31 32 33def make_prediction(nb_of_samples): 34 xs = np.loadtxt('area2.txt') ← 識別データファイルの読込み 35 ts = np.loadtxt('seikai2.txt') ← 識別正解値データファイルの読込み(正解率計算用。実際の使用時は正解値は使用しない) 36 return np.array([[[y] for y in x] for x in xs]), np.array([[x] for x in ts]) 37 38 39def inference(input_ph, istate_ph): 40 with tf.name_scope("inference") as scope: 41 weight1_var = tf.Variable(tf.truncated_normal( 42 [num_of_input_nodes, num_of_hidden_nodes], stddev=0.1), name="weight1") 43 weight2_var = tf.Variable(tf.truncated_normal( 44 [num_of_hidden_nodes, num_of_output_nodes], stddev=0.1), name="weight2") 45 bias1_var = tf.Variable(tf.truncated_normal([num_of_hidden_nodes], stddev=0.1), name="bias1") 46 bias2_var = tf.Variable(tf.truncated_normal([num_of_output_nodes], stddev=0.1), name="bias2") 47 48 in1 = tf.transpose(input_ph, [1, 0, 2]) 49 in2 = tf.reshape(in1, [-1, num_of_input_nodes]) 50 in3 = tf.matmul(in2, weight1_var) + bias1_var 51 in4 = tf.split(in3, length_of_sequences, 0) 52 53 cell = tf.nn.rnn_cell.BasicLSTMCell(num_of_hidden_nodes, forget_bias=forget_bias, state_is_tuple=False) 54 rnn_output, states_op = tf.contrib.rnn.static_rnn(cell, in4, initial_state=istate_ph) 55 output_op = tf.matmul(rnn_output[-1], weight2_var) + bias2_var 56 57 # Add summary ops to collect data 58 w1_hist = tf.summary.histogram("weights1", weight1_var) 59 w2_hist = tf.summary.histogram("weights2", weight2_var) 60 b1_hist = tf.summary.histogram("biases1", bias1_var) 61 b2_hist = tf.summary.histogram("biases2", bias2_var) 62 output_hist = tf.summary.histogram("output", output_op) 63 results = [weight1_var, weight2_var, bias1_var, bias2_var] 64 return output_op, states_op, results 65 66 67def loss(output_op, supervisor_ph): 68 with tf.name_scope("loss") as scope: 69 square_error = tf.reduce_mean(tf.square(output_op - supervisor_ph)) 70 loss_op = square_error 71 tf.summary.scalar("loss", loss_op) 72 return loss_op 73 74 75def training(loss_op): 76 with tf.name_scope("training") as scope: 77 training_op = optimizer.minimize(loss_op) 78 return training_op 79 80 81def calc_accuracy(output_op, prints=False): 82 inputs, ts = make_prediction(num_of_prediction_epochs) 83 pred_dict = { 84 input_ph: inputs, 85 supervisor_ph: ts, 86 istate_ph: np.zeros((num_of_prediction_epochs, num_of_hidden_nodes * 2)), 87 } 88 output = sess.run([output_op], feed_dict=pred_dict) 89 90 def print_result(i, p, q): 91 [print(list(x)[0]) for x in i] 92 print("output: %f, correct: %d" % (p, q)) 93 if prints: 94 [print_result(i, p, q) for i, p, q in zip(inputs, output[0], ts)] 95 96 opt = abs(output - ts)[0] 97 total = sum([1 if x[0] < 0.5 else 0 for x in opt])0.05から0.5に変更 98 print("accuracy %f" % (total / float(len(ts)))) 99 return output 100 101random.seed(0) 102np.random.seed(0) 103tf.set_random_seed(0) 104 105optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate) 106 107X, t = create_data(num_of_sample, length_of_sequences) 108 109with tf.Graph().as_default(): 110 input_ph = tf.placeholder(tf.float32, [None, length_of_sequences, num_of_input_nodes], name="input") 111 supervisor_ph = tf.placeholder(tf.float32, [None, num_of_output_nodes], name="supervisor") 112 istate_ph = tf.placeholder(tf.float32, [None, num_of_hidden_nodes * 2], name="istate") 113 114 output_op, states_op, datas_op = inference(input_ph, istate_ph) 115 loss_op = loss(output_op, supervisor_ph) 116 training_op = training(loss_op) 117 118 summary_op = tf.summary.merge_all() 119 init = tf.initialize_all_variables() 120 121 with tf.Session() as sess: 122 saver = tf.train.Saver() 123 summary_writer = tf.summary.FileWriter("/tmp/tensorflow_log", graph=sess.graph) 124 sess.run(init) 125 126 for epoch in range(num_of_training_epochs): 127 inputs, supervisors = get_batch(size_of_mini_batch, X, t) 128 train_dict = { 129 input_ph: inputs, 130 supervisor_ph: supervisors, 131 istate_ph: np.zeros((size_of_mini_batch, num_of_hidden_nodes * 2)), 132 } 133 sess.run(training_op, feed_dict=train_dict) 134 135 if (epoch) % 100 == 0: 136 summary_str, train_loss = sess.run([summary_op, loss_op], feed_dict=train_dict) 137 print("train#%d, train loss: %e" % (epoch, train_loss)) 138 summary_writer.add_summary(summary_str, epoch) 139 if (epoch) % 500 == 0: 140 calc_accuracy(output_op) 141 142 calc_accuracy(output_op, prints=True) 143 datas = sess.run(datas_op) 144 saver.save(sess, "model.ckpt")

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

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

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

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

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

hayataka2049

2019/05/21 08:12

このサイトの使用上、コードブロック機能を使わないと読めなくなるので、質問文を編集してください。 https://teratail.com/tour ```python コード ``` のようにするか、囲いたい部分を選択して<code>ボタンを押せば良いです。
tubusio

2019/05/21 08:19

了解です。 わざわざありがとうございます
hayataka2049

2019/05/21 08:53 編集

えっと、該当のソースコード以下の部分がコードブロック内に入るようにしてください。現状うまくいっていません。 ```python # 一例 print("hoge") ``` のようにする必要があるということですね。
tubusio

2019/05/21 08:58

あ、了解です すいません。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問