質問編集履歴

3

重複した内容の削除

2017/08/28 07:53

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -266,8 +266,6 @@
266
266
 
267
267
 
268
268
 
269
- これは、tf.global_variables_initializer()によってパラメータの初期化が出来ていないという事だと思うのですが、どうすれば初期化する事が出来るのでしょうか?
270
-
271
269
  それともインスタンス変数で初期化するのはあまり望ましくない事なのでしょうか?
272
270
 
273
271
 

2

解決\?策の追記

2017/08/28 07:53

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -262,138 +262,266 @@
262
262
 
263
263
 
264
264
 
265
- このコードを実行すると
266
-
267
- ```ここに言語を入力
268
-
269
- Traceback (most recent call last):
270
-
271
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\client\session.py", line 1039, in _do_call
272
-
273
- return fn(*args)
274
-
275
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\client\session.py", line 1021, in _run_fn
276
-
277
- status, run_metadata)
278
-
279
- File "c:\Python3.5.0\python35\lib\contextlib.py", line 66, in __exit__
280
-
281
- next(self.gen)
282
-
283
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 466, in raise_exception_on_not_ok_status
284
-
285
- pywrap_tensorflow.TF_GetCode(status))
286
-
287
- tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value Variable_5
288
-
289
- [[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_5)]]
290
-
291
-
292
-
293
- During handling of the above exception, another exception occurred:
294
-
295
-
296
-
297
- Traceback (most recent call last):
298
-
299
- File "C:\Python3.5.0\Python35\コード\test.py", line 132, in <module>
300
-
301
- net.学習処理(32, 64)
302
-
303
- File "C:\Python3.5.0\Python35\コード\test.py", line 125, in 学習処理
304
-
305
- self.キープ率:0.5})
306
-
307
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\client\session.py", line 778, in run
308
-
309
- run_metadata_ptr)
310
-
311
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\client\session.py", line 982, in _run
312
-
313
- feed_dict_string, options, run_metadata)
314
-
315
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\client\session.py", line 1032, in _do_run
316
-
317
- target_list, options, run_metadata)
318
-
319
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\client\session.py", line 1052, in _do_call
320
-
321
- raise type(e)(node_def, op, message)
322
-
323
- tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value Variable_5
324
-
325
- [[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_5)]]
326
-
327
-
328
-
329
- Caused by op 'Variable_5/read', defined at:
330
-
331
- File "C:\Python3.5.0\Python35\コード\test.py", line 132, in <module>
332
-
333
- net.学習処理(32, 64)
334
-
335
- File "C:\Python3.5.0\Python35\コード\test.py", line 122, in 学習処理
336
-
337
- n = セッション.run(self.確率的勾配下降(入力値, 正解サイズ),
338
-
339
- File "C:\Python3.5.0\Python35\コード\test.py", line 99, in 確率的勾配下降
340
-
341
- 欠損値 = self.欠損関数(入力値, 正解ラベル)
342
-
343
- File "C:\Python3.5.0\Python35\コード\test.py", line 85, in 欠損関数
344
-
345
- = self.伝達処理(32, 64, 入)
346
-
347
- File "C:\Python3.5.0\Python35\コード\test.py", line 64, in 伝達処理
348
-
349
- 出力 = 畳み込み層(f枚数1, f枚数2).伝達処理(入力値)
350
-
351
- File "C:\Python3.5.0\Python35\コード\test.py", line 13, in __init__
352
-
353
- self.バイアス1 = tf.Variable(tf.constant(0.1, shape=[f枚数1]))
354
-
355
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\ops\variables.py", line 197, in __init__
356
-
357
- expected_shape=expected_shape)
358
-
359
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\ops\variables.py", line 316, in _init_from_args
360
-
361
- self._snapshot = array_ops.identity(self._variable, name="read")
362
-
363
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\ops\gen_array_ops.py", line 1338, in identity
364
-
365
- result = _op_def_lib.apply_op("Identity", input=input, name=name)
366
-
367
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 768, in apply_op
368
-
369
- op_def=op_def)
370
-
371
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\framework\ops.py", line 2336, in create_op
372
-
373
- original_op=self._default_original_op, op_def=op_def)
374
-
375
- File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\framework\ops.py", line 1228, in __init__
376
-
377
- self._traceback = _extract_stack()
378
-
379
-
380
-
381
- FailedPreconditionError (see above for traceback): Attempting to use uninitialized value Variable_5
382
-
383
- [[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_5)]]
384
-
385
-
265
+ このコードを実行するとtf.global_variables_initializer()で初期化出来ていないという趣旨のエラーが出ます
266
+
267
+
268
+
269
+ これは、tf.global_variables_initializer()によってパラメータの初期化が出来ていないという事だと思うのですが、どうすれば初期化する事が出来るのでしょうか?
270
+
271
+ それともインスタンス変数で初期化するのはあまり望ましくない事なのでしょうか?
272
+
273
+
274
+
275
+ わかる方いらしたらよろしくお願いします><
276
+
277
+
278
+
279
+
280
+
281
+ 追記
282
+
283
+ 結構前の質問ですが、自分のしたい感じの事が出来たので、一応追記しておきます。
284
+
285
+
286
+
287
+ ```python
288
+
289
+ mport tensorflow as tf
290
+
291
+ import numpy as np
292
+
293
+ import モデル
294
+
295
+ import 関数
296
+
297
+ from dataset.mnist import load_mnist
298
+
299
+
300
+
301
+ class mnist:
302
+
303
+ def __init__(self,入力形状, 正解形状, f枚数, 中間数, 学習率):
304
+
305
+ self.セッション = tf.Session()
306
+
307
+ self.入力ホルダ = tf.placeholder(tf.float32, 入力形状)
308
+
309
+ self.正解ホルダ = tf.placeholder(tf.float32, 正解形状)
310
+
311
+ self.キープ率 = tf.placeholder(tf.float32)
312
+
313
+
314
+
315
+ """畳み込み層のパラメーター"""
316
+
317
+ self.f1 = tf.Variable(tf.truncated_normal([3, 3, 1, f枚数],
318
+
319
+ stddev=0.01))
320
+
321
+ self.fb1 = tf.Variable(tf.truncated_normal([f枚数],
322
+
323
+ stddev=0.01))
324
+
325
+ self.f2 = tf.Variable(tf.truncated_normal([3, 3, f枚数, f枚数],
326
+
327
+ stddev=0.01))
328
+
329
+ self.fb2 = tf.Variable(tf.truncated_normal([f枚数],
330
+
331
+ stddev=0.01))
332
+
333
+
334
+
335
+ self.畳み込み出力 = モデル.cnn_batch_relu(self.入力ホルダ,
336
+
337
+ self.f1, self.fb1,
338
+
339
+ self.f2, self.fb2)
340
+
341
+
342
+
343
+ """全結合層のパラメーター"""
344
+
345
+ = tf.size(self.畳み込み出[0])
346
+
347
+ 全結合 = tf.reshape(self.畳み込み出力, [-1, 入力数])
348
+
349
+ 出力 = 正解形状[1]
350
+
351
+
352
+
353
+ self.重み1 = \
354
+
355
+ tf.Variable(tf.truncated_normal([入力数,中間数],
356
+
357
+ stddev=tf.sqrt(2.0 / tf.cast(入力数, tf.float32))))
358
+
359
+ self.バイアス1 = tf.Variable(tf.truncated_normal([中間数],stddev=0.01))
360
+
361
+
362
+
363
+ self.重み2 = \
364
+
365
+ tf.Variable(tf.truncated_normal([中間数, 出力数],
366
+
367
+ stddev= 0.01))
368
+
369
+ self.バイアス2 = tf.Variable(tf.truncated_normal([出力数], stddev=0.01))
370
+
371
+
372
+
373
+ self.出力層 = モデル.fcn_batch_relu(self.重み1, self.バイアス1,
374
+
375
+ self.重み2, self.バイアス2,
376
+
377
+ 全結合, self.キープ率)
378
+
379
+
380
+
381
+ self.欠損値 = 関数.二乗和誤差(self.出力層, self.正解ホルダ)
382
+
383
+ self.勾配下降 = \
384
+
385
+ tf.train.GradientDescentOptimizer(学習率).minimize(self.欠損値)
386
+
387
+ self.セッション.run(tf.global_variables_initializer())
388
+
389
+
390
+
391
+ def 出力層run(self, 入力値, キープ率):
392
+
393
+ return self.セッション.run(self.出力層,
394
+
395
+ feed_dict={self.入力ホルダ:入力値,
396
+
397
+ self.キープ率:キープ率})
398
+
399
+
400
+
401
+
402
+
403
+ def 欠損値run(self, 入力値, 正解ラベル, キープ率):
404
+
405
+ return self.セッション.run(self.欠損値,
406
+
407
+ feed_dict={self.入力ホルダ:入力値,
408
+
409
+ self.正解ホルダ:正解ラベル,
410
+
411
+ self.キープ率:キープ率})
412
+
413
+
414
+
415
+ def 正解率run(self, 入力値, 正解ラベル, キープ率):
416
+
417
+ 出力層 = self.出力層run(入力値, キープ率)
418
+
419
+ 正解率 = 関数.分類正解率(出力層, 正解ラベル)
420
+
421
+ return self.セッション.run(正解率,
422
+
423
+ feed_dict={self.入力ホルダ:入力値,
424
+
425
+ self.正解ホルダ:正解ラベル,
426
+
427
+ self.キープ率:キープ率})
428
+
429
+
430
+
431
+ def 勾配下降run(self, 入力値, 正解ラベル, キープ率):
432
+
433
+ self.セッション.run(self.勾配下降,
434
+
435
+ feed_dict={self.入力ホルダ:入力値,
436
+
437
+ self.正解ホルダ:正解ラベル,
438
+
439
+ self.キープ率:キープ率})
440
+
441
+
442
+
443
+
444
+
445
+ (入力値, 正解ラベル), (t入力値, t正解ラベル) = load_mnist(flatten=True,
446
+
447
+ normalize=False, one_hot_label=True)
448
+
449
+
450
+
451
+ network = mnist([None, 28, 28, 1], [None, 10], 50, 2024, 0.0001)
452
+
453
+
454
+
455
+ 入力値 = 入力値.reshape(60000, 28, 28, 1)
456
+
457
+ t入力値 = t入力値.reshape(10000, 28, 28, 1)
458
+
459
+ 学習回数 = 50000
460
+
461
+ バッチsize = 100
462
+
463
+
464
+
465
+ for _ in range(学習回数):
466
+
467
+ ミニバッチ = np.random.choice(60000, バッチsize)
468
+
469
+ 入力ミニバッチ = 入力値[ミニバッチ]
470
+
471
+ 正解ミニバッチ = 正解ラベル[ミニバッチ]
472
+
473
+ network.勾配下降run(入力ミニバッチ, 正解ミニバッチ, 0.5)
474
+
475
+
476
+
477
+ if _%200 == 0:
478
+
479
+ 欠損値リスト = []
480
+
481
+ 正解率リスト = []
482
+
483
+ start = 0
484
+
485
+ end = 1001
486
+
487
+ for i in range(10):
488
+
489
+ 欠損値 = network.欠損値run(t入力値[start:end],
490
+
491
+ t正解ラベル[start:end],
492
+
493
+ 1.0)
494
+
495
+
496
+
497
+ 正解率 = network.正解率run(t入力値[start:end],
498
+
499
+ t正解ラベル[start:end],
500
+
501
+ 1.0)
502
+
503
+
504
+
505
+ 欠損値リスト.append(欠損値)
506
+
507
+ 正解率リスト.append(正解率)
508
+
509
+ start += 1000
510
+
511
+ end += 1000
512
+
513
+
514
+
515
+ print(len(欠損値リスト))
516
+
517
+ print(len(正解率リスト))
518
+
519
+ print(_, "欠損値", np.sum(欠損値リスト) / 10)
520
+
521
+ print(_, "正解率", np.mean(正解率リスト))
386
522
 
387
523
  ```
388
524
 
389
- というエラーが出ます
525
+
390
-
391
-
392
-
526
+
393
- これは、tf.global_variables_initializer()によってパラメータの初期化が出来ていないというだと思うのすがうすれば初期化する事が出来るのでょうか?
527
+ インスタンス変数にtf.Sessionとtf.global_variables_initializerを置く事で、前回のエラーを回避しつつ、session.runもまく起動する事が出来た。
394
-
395
- それともインスタンス変数で初期化するのはあまり望ましくない事なのでしょうか?
396
-
397
-
398
-
399
- わかる方いらしたらよろしくお願いします><

1

エラーメッセージの修正

2017/08/28 07:52

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -266,7 +266,123 @@
266
266
 
267
267
  ```ここに言語を入力
268
268
 
269
+ Traceback (most recent call last):
270
+
271
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\client\session.py", line 1039, in _do_call
272
+
273
+ return fn(*args)
274
+
275
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\client\session.py", line 1021, in _run_fn
276
+
277
+ status, run_metadata)
278
+
279
+ File "c:\Python3.5.0\python35\lib\contextlib.py", line 66, in __exit__
280
+
281
+ next(self.gen)
282
+
283
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 466, in raise_exception_on_not_ok_status
284
+
285
+ pywrap_tensorflow.TF_GetCode(status))
286
+
287
+ tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value Variable_5
288
+
289
+ [[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_5)]]
290
+
291
+
292
+
293
+ During handling of the above exception, another exception occurred:
294
+
295
+
296
+
297
+ Traceback (most recent call last):
298
+
299
+ File "C:\Python3.5.0\Python35\コード\test.py", line 132, in <module>
300
+
301
+ net.学習処理(32, 64)
302
+
303
+ File "C:\Python3.5.0\Python35\コード\test.py", line 125, in 学習処理
304
+
305
+ self.キープ率:0.5})
306
+
307
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\client\session.py", line 778, in run
308
+
309
+ run_metadata_ptr)
310
+
311
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\client\session.py", line 982, in _run
312
+
313
+ feed_dict_string, options, run_metadata)
314
+
315
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\client\session.py", line 1032, in _do_run
316
+
317
+ target_list, options, run_metadata)
318
+
319
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\client\session.py", line 1052, in _do_call
320
+
321
+ raise type(e)(node_def, op, message)
322
+
323
+ tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value Variable_5
324
+
325
+ [[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_5)]]
326
+
327
+
328
+
329
+ Caused by op 'Variable_5/read', defined at:
330
+
331
+ File "C:\Python3.5.0\Python35\コード\test.py", line 132, in <module>
332
+
333
+ net.学習処理(32, 64)
334
+
335
+ File "C:\Python3.5.0\Python35\コード\test.py", line 122, in 学習処理
336
+
337
+ n = セッション.run(self.確率的勾配下降(入力値, 正解サイズ),
338
+
339
+ File "C:\Python3.5.0\Python35\コード\test.py", line 99, in 確率的勾配下降
340
+
341
+ 欠損値 = self.欠損関数(入力値, 正解ラベル)
342
+
343
+ File "C:\Python3.5.0\Python35\コード\test.py", line 85, in 欠損関数
344
+
345
+ 出力値 = self.伝達処理(32, 64, 入力値)
346
+
347
+ File "C:\Python3.5.0\Python35\コード\test.py", line 64, in 伝達処理
348
+
349
+ 畳出力値 = 畳み込み層(f枚数1, f枚数2).伝達処理(入力値)
350
+
351
+ File "C:\Python3.5.0\Python35\コード\test.py", line 13, in __init__
352
+
353
+ self.バイアス1 = tf.Variable(tf.constant(0.1, shape=[f枚数1]))
354
+
355
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\ops\variables.py", line 197, in __init__
356
+
357
+ expected_shape=expected_shape)
358
+
359
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\ops\variables.py", line 316, in _init_from_args
360
+
361
+ self._snapshot = array_ops.identity(self._variable, name="read")
362
+
363
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\ops\gen_array_ops.py", line 1338, in identity
364
+
365
+ result = _op_def_lib.apply_op("Identity", input=input, name=name)
366
+
367
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 768, in apply_op
368
+
369
+ op_def=op_def)
370
+
371
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\framework\ops.py", line 2336, in create_op
372
+
373
+ original_op=self._default_original_op, op_def=op_def)
374
+
375
+ File "c:\Python3.5.0\python35\lib\site-packages\tensorflow\python\framework\ops.py", line 1228, in __init__
376
+
377
+ self._traceback = _extract_stack()
378
+
379
+
380
+
269
- Attempting to use uninitialized value Variable_4
381
+ FailedPreconditionError (see above for traceback): Attempting to use uninitialized value Variable_5
382
+
383
+ [[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_5)]]
384
+
385
+
270
386
 
271
387
  ```
272
388