質問編集履歴
3
重複した内容の削除
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
解決\?策の追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -262,138 +262,266 @@
|
|
262
262
|
|
263
263
|
|
264
264
|
|
265
|
-
このコードを実行すると
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
self.
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
tar
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
self.
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
self.
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
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
|
-
|
527
|
+
インスタンス変数にtf.Sessionとtf.global_variables_initializerを置く事で、前回のエラーを回避しつつ、session.runもうまく起動する事が出来ました。
|
394
|
-
|
395
|
-
それともインスタンス変数で初期化するのはあまり望ましくない事なのでしょうか?
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
わかる方いらしたらよろしくお願いします><
|
1
エラーメッセージの修正
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_
|
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
|
|