teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

7

動作コード追記

2017/04/11 14:38

投稿

Worldforward
Worldforward

スコア17

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,70 @@
1
1
  下記コードで勾配降下法で定数a,b,cの近似値を求めようと考えています。
2
+
3
+ 追記:描きコードに酒精したところ動作はしましたが、勾配降下方による予測値は期待値の半分程度の値をとっています。cはゼロ値になっており収束してゼロなのかこれから確認します。
4
+
5
+ ```lang-python
6
+ # Imports
7
+ import tensorflow as tf
8
+ import numpy as np
9
+ import xlrd
10
+
11
+ # Gradient Update Rate
12
+ gradient_rate=0.001
13
+
14
+ # Placeholders
15
+ Ta = tf.placeholder(tf.float32, name='Ta')
16
+ Tb = tf.placeholder(tf.float32, name='Tb')
17
+
18
+ a = tf.Variable(tf.zeros([1, 1]))
19
+ b = tf.Variable(tf.zeros([1, 1]))
20
+ c = tf.Variable(tf.zeros([1, 1]))
21
+
22
+ def inference(Ta, Tb):
23
+ Z = (a * Ta + b) * tf.exp(Tb - c * Ta)
24
+ return Z
25
+
26
+ def loss(logit, label):
27
+ loss = tf.reduce_mean(tf.square(logit - label))
28
+ return loss
29
+
30
+ def training(loss, gradient_rate):
31
+ optimizer = tf.train.GradientDescentOptimizer(gradient_rate)
32
+ train_op = optimizer.minimize(loss)
33
+ return train_op
34
+
35
+ # Read Excel File
36
+ book = xlrd.open_workbook('test.xlsx')
37
+ sheet = book.sheet_by_index(0)
38
+
39
+ # Model Processing
40
+ for i in range(sheet.ncols):
41
+ Ta = float(sheet.cell_value(i, 0))
42
+ Tb = float(sheet.cell_value(i, 1))
43
+ print("%d: Ta: %f, Tb: %f" % (i, Ta, Tb))
44
+
45
+ # Inference Model.
46
+ logit = inference(Ta, Tb)
47
+
48
+ label = float(sheet.cell_value(i, 2))
49
+
50
+ # Loss Calculation.
51
+ loss = loss(logit, label)
52
+
53
+ train_op = training(loss, gradient_rate)
54
+
55
+ # Model Running
56
+ sess = tf.Session()
57
+ sess.run(tf.global_variables_initializer())
58
+ sess.run(logit)
59
+ sess.run(loss)
60
+ sess.run(train_op)
61
+
62
+ print(sess.run(a), sess.run(b), sess.run(c))
63
+ ```
64
+
65
+
66
+
67
+
2
68
  SDGでもバッチでも良いのですが、エラー:
3
69
  ValueError: No variables to optimize.
4
70
  がどういう意図のメッセージなのか理解できていません。現状SGDのコードになっていることは理解できていますが、書き方の正しさは分かっていません。

6

期待値追加

2017/04/11 14:38

投稿

Worldforward
Worldforward

スコア17

title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  このような状況ですが、このコード上何が間違っているかをSGDとバッチの両方の面から指摘していただけると助かります。宜しくお願い致します。
10
10
  トレースバックを下記に示します。
11
- 入力値をそれに対する期待値(ラベル)諸事情により開示きません
11
+ 入力値TaとTbに対する期待値は例えば、下記の場合12.855
12
12
 
13
13
  ```lang-python
14
14
  >>>> Ta <<<<

5

tracebackの再ペースト

2017/04/11 13:35

投稿

Worldforward
Worldforward

スコア17

title CHANGED
File without changes
body CHANGED
@@ -11,10 +11,18 @@
11
11
  入力値をそれに対する期待値(ラベル)は諸事情により開示できません。
12
12
 
13
13
  ```lang-python
14
+ >>>> Ta <<<<
15
+ 13.521899999999986
16
+ >>>> Tb <<<<
17
+ 56.5643
18
+ >>>> LOGIT <<<<
19
+ Tensor("mul_2:0", dtype=float32)
20
+ >>>> LOSS <<<<
21
+ Tensor("Mean:0", dtype=float32)
14
22
  Traceback (most recent call last):
15
- File "fitting.py", line 52, in <module>
23
+ File "fitting_question.py", line 53, in <module>
16
- train_op = training(loss)
24
+ train_op = training(loss, gradient_rate)
17
- File "fitting.py", line 29, in training
25
+ File "fitting_question.py", line 25, in training
18
26
  train_op = optimizer.minimize(loss)
19
27
  File "//anaconda/lib/python3.5/site-packages/tensorflow/python/training/optimizer.py", line 279, in minimize
20
28
  grad_loss=grad_loss)

4

トレースバックの追記

2017/04/11 13:27

投稿

Worldforward
Worldforward

スコア17

title CHANGED
File without changes
body CHANGED
@@ -7,8 +7,23 @@
7
7
  forループの初回で上記エラーが"train_op = optimizer.minimize(loss)"で発生しています。
8
8
 
9
9
  このような状況ですが、このコード上何が間違っているかをSGDとバッチの両方の面から指摘していただけると助かります。宜しくお願い致します。
10
+ トレースバックを下記に示します。
11
+ 入力値をそれに対する期待値(ラベル)は諸事情により開示できません。
10
12
 
11
13
  ```lang-python
14
+ Traceback (most recent call last):
15
+ File "fitting.py", line 52, in <module>
16
+ train_op = training(loss)
17
+ File "fitting.py", line 29, in training
18
+ train_op = optimizer.minimize(loss)
19
+ File "//anaconda/lib/python3.5/site-packages/tensorflow/python/training/optimizer.py", line 279, in minimize
20
+ grad_loss=grad_loss)
21
+ File "//anaconda/lib/python3.5/site-packages/tensorflow/python/training/optimizer.py", line 339, in compute_gradients
22
+ raise ValueError("No variables to optimize.")
23
+ ValueError: No variables to optimize.
24
+ ```
25
+
26
+ ```lang-python
12
27
  # Imports
13
28
  import tensorflow as tf
14
29
  import numpy as np

3

引数間違いを修正

2017/04/11 13:24

投稿

Worldforward
Worldforward

スコア17

title CHANGED
File without changes
body CHANGED
@@ -33,7 +33,7 @@
33
33
  loss = tf.reduce_mean(tf.square(logit - label))
34
34
  return loss
35
35
 
36
- def training(loss, learning_rate):
36
+ def training(loss, gradient_rate):
37
37
  optimizer = tf.train.GradientDescentOptimizer(gradient_rate)
38
38
  train_op = optimizer.minimize(loss)
39
39
  return train_op

2

```python code```に修正

2017/04/11 12:39

投稿

Worldforward
Worldforward

スコア17

title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  このような状況ですが、このコード上何が間違っているかをSGDとバッチの両方の面から指摘していただけると助かります。宜しくお願い致します。
10
10
 
11
- <CODE>
11
+ ```lang-python
12
12
  # Imports
13
13
  import tensorflow as tf
14
14
  import numpy as np
@@ -73,4 +73,4 @@
73
73
  sess.run(train_op)
74
74
 
75
75
  print(sess.run(a), sess.run(b), sess.run(c))
76
- <CODE>
76
+ ```

1

<CODE>によるコードの明示など

2017/04/11 12:34

投稿

Worldforward
Worldforward

スコア17

title CHANGED
File without changes
body CHANGED
@@ -1,13 +1,14 @@
1
1
  下記コードで勾配降下法で定数a,b,cの近似値を求めようと考えています。
2
2
  SDGでもバッチでも良いのですが、エラー:
3
3
  ValueError: No variables to optimize.
4
- のメッセージなのか理解できていません。現状SGDのコードになっていることは理解できていますが、書き方の正しさは分かっていません。
4
+ どういうのメッセージなのか理解できていません。現状SGDのコードになっていることは理解できていますが、書き方の正しさは分かっていません。
5
5
  そもそもplaceholderを使うべきかもよく分かっていません。
6
6
  Model runningの部分は自分でも間違っている気がしています。
7
7
  forループの初回で上記エラーが"train_op = optimizer.minimize(loss)"で発生しています。
8
8
 
9
9
  このような状況ですが、このコード上何が間違っているかをSGDとバッチの両方の面から指摘していただけると助かります。宜しくお願い致します。
10
10
 
11
+ <CODE>
11
12
  # Imports
12
13
  import tensorflow as tf
13
14
  import numpy as np
@@ -33,7 +34,7 @@
33
34
  return loss
34
35
 
35
36
  def training(loss, learning_rate):
36
- optimizer = tf.train.GradientDescentOptimizer(learning_rate)
37
+ optimizer = tf.train.GradientDescentOptimizer(gradient_rate)
37
38
  train_op = optimizer.minimize(loss)
38
39
  return train_op
39
40
 
@@ -71,4 +72,5 @@
71
72
  sess.run(tf.global_variables_initializer())
72
73
  sess.run(train_op)
73
74
 
74
- print(sess.run(a), sess.run(b), sess.run(c))
75
+ print(sess.run(a), sess.run(b), sess.run(c))
76
+ <CODE>