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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

0回答

1162閲覧

TensorFlow1.*のプログラムをTensorFlow2.*で動かしたいです。

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2021/08/19 10:08

編集2022/02/09 21:51

今TensorFlow1.*で書かれたプログラムをTensorFlow2.*で動作できるように変えています。
その段階で躓いてしまったので、教えていただきたいです。

自分は今、前回の質問でTensorFlowのFlagsをお力をお借りして解決することができました。

しかし、その後にもバージョンの問題で色々なエラーが出てきました。
どこが原因なのかがわかりません。
実行後の内容がこちらです。

Network setup: Traceback (most recent call last): File "hdrcnn_predict5.py", line 77, in <module> net = network.model(x) File "/Users/****/hdrcnn/hdrcnn-master/network.py", line 16, in model net_in = tl.layers.InputLayer(x_in, name='input_layer') File "/Users/****/Library/Python/3.7/lib/python/site-packages/tensorlayer/layers/deprecated.py", line 178, in InputLayer raise NonExistingLayerError("InputLayer(x, name='a') --> Input(name='a')(x)" + __log__) tensorlayer.layers.deprecated.NonExistingLayerError: InputLayer(x, name='a') --> Input(name='a')(x) Hint: 1) downgrade TF and TL from version 2.x to 1.x. 2) check the documentation of TF and TL version 2.x

プログラムです。

python

1# -*- coding: utf-8 -*- 2 3import os, sys 4import tensorflow.compat.v1 as tf 5tf.disable_v2_behavior() 6import tensorlayer as tl 7import numpy as np 8import network, img_io 9 10eps = 1e-5 11 12def print_(str, color='', bold=False): 13 if color == 'w': 14 sys.stdout.write('\033[93m') 15 elif color == "e": 16 sys.stdout.write('\033[91m') 17 elif color == "m": 18 sys.stdout.write('\033[95m') 19 20 if bold: 21 sys.stdout.write('\033[1m') 22 23 sys.stdout.write(str) 24 sys.stdout.write('\033[0m') 25 sys.stdout.flush() 26 27 28#設定、TensorFlow引数を使用 29FLAGS = tf.flags.FLAGS 30tf.flags.DEFINE_integer("width", "1024", "Reconstruction image width") 31tf.flags.DEFINE_integer("height", "768", "Reconstruction image height") 32tf.flags.DEFINE_string("im_dir", "data", "Path to image directory or an individual image") 33tf.flags.DEFINE_string("out_dir", "out", "Path to output directory") 34tf.flags.DEFINE_string("params", "hdrcnn_params.npz", "Path to trained CNN weights") 35 36tf.flags.DEFINE_float("scaling", "1.0", "Pre-scaling, which is followed by clipping, in order to remove compression artifacts close to highlights") 37tf.flags.DEFINE_float("gamma", "1.0", "Gamma/exponential curve applied before, and inverted after, prediction. This can be used to control the boost of reconstructed pixels.") 38 39#32の倍数に丸めて、オートエンコーダのプーリングとアップサンプリングを行う 40#入力画像と同じサイズになります 41sx = int(np.maximum(32, np.round(FLAGS.width/32.0)*32)) 42sy = int(np.maximum(32, np.round(FLAGS.height/32.0)*32)) 43if sx != FLAGS.width or sy != FLAGS.height: 44 print_("Warning: ", 'w', True) 45 print_("prediction size has been changed from %dx%d pixels to %dx%d\n"%(FLAGS.width, FLAGS.height, sx, sy), 'w') 46 print_("ピクセル、オートエンコーダのプーリングとアップサンプリングに準拠します。\n\n", 'w') 47 48#情報 49print_("\n\n\t-------------------------------------------------------------------\n", 'm') 50print_("\t ディープCNNを使用した単一露光からのHDR画像再構成\n\n", 'm') 51print_("\t 予測設定\n", 'm') 52print_("\t -------------------\n", 'm') 53print_("\t 入力画像のディレクトリ/ファイル:%s\n" % FLAGS.im_dir, 'm') 54print_("\t 出力ディレクトリ:%s\n" % FLAGS.out_dir, 'm') 55print_("\t CNN重み:%s\n" % FLAGS.params, 'm') 56print_("\t 予測解像度: %dx%d ピクセル\n" % (sx, sy), 'm') 57if FLAGS.scaling > 1.0: 58 print_("\t Pre-scaling: %0.4f\n" % FLAGS.scaling, 'm') 59if FLAGS.gamma > 1.0 + eps or FLAGS.gamma < 1.0 - eps: 60 print_("\t Gamma: %0.4f\n" % FLAGS.gamma, 'm') 61print_("\t-------------------------------------------------------------------\n\n\n", 'm') 62 63# シングルフレーム 64frames = [FLAGS.im_dir] 65 66# ディレクトリが指定されている場合は、パス内のすべてのファイルの名前を取得します 67if os.path.isdir(FLAGS.im_dir): 68 frames = [os.path.join(FLAGS.im_dir, name) 69 for name in sorted(os.listdir(FLAGS.im_dir)) 70 if os.path.isfile(os.path.join(FLAGS.im_dir, name))] 71 72#画像入力用のプレースホルダー 73x = tf.placeholder(tf.float32, shape=[1, sy, sx, 3]) 74 75#HDR再構成オートエンコーダモデル 76print_("Network setup:\n") 77net = network.model(x) 78 79#CNN予測(これには入力画像xとのブレンドも含まれます) 80y = network.get_final(net, x) 81 82#推論を実行するためのTensorFlowセッション 83sess = tf.InteractiveSession() 84 85#トレーニング済みのCNNウェイトをロードする 86print_("\nLoading trained parameters from '%s'..."%FLAGS.params) 87load_params = tl.files.load_npz(name=FLAGS.params) 88tl.files.assign_params(sess, load_params, net) 89print_("\tdone\n") 90 91if not os.path.exists(FLAGS.out_dir): 92 os.makedirs(FLAGS.out_dir) 93 94print_("\nStarting prediction...\n\n") 95k = 0 96for i in range(len(frames)): 97 print("Frame %d: '%s'"%(i,frames[i])) 98 99 try: 100 #フレームの読み込み 101 print_("\tReading...") 102 x_buffer = img_io.readLDR(frames[i], (sy,sx), True, FLAGS.scaling) 103 print_("\tdone") 104 105 print_("\t(Saturation: %0.2f%%)\n" % (100.0*(x_buffer>=1).sum()/x_buffer.size), 'm') 106 107 # 実行予測。 108 # ガンマ値は、再構成されたハイライトの強度を高める/減らすことを可能にするために使用されます。 109 # y = f(x)が再構成されたものであれば、ガンマ値 gは、y = f(x^(1/g))^gに従ってこれを変更します。 110 print_("\tInference...") 111 feed_dict = {x: np.power(np.maximum(x_buffer, 0.0), 1.0/FLAGS.gamma)} 112 y_predict = sess.run([y], feed_dict=feed_dict) 113 y_predict = np.power(np.maximum(y_predict, 0.0), FLAGS.gamma) 114 print_("\tdone\n") 115 116 # ガンマ補正出力 117 y_gamma = np.power(np.maximum(y_predict, 0.0), 0.5) 118 119 # ディスクへの書き込み 120 print_("\tWriting...") 121 k += 1; 122 img_io.writeLDR(x_buffer, '%s/%06d_in.png' % (FLAGS.out_dir, k), -3) 123 img_io.writeLDR(y_gamma, '%s/%06d_out.png' % (FLAGS.out_dir, k), -3) 124 img_io.writeEXR(y_predict, '%s/%06d_out.exr' % (FLAGS.out_dir, k)) 125 print_("\tdone\n") 126 127 except img_io.IOException as e: 128 print_("\n\t\tWarning! ", 'w', True) 129 print_("%s\n"%e, 'w') 130 except Exception as e: 131 print_("\n\t\tError: ", 'e', True) 132 print_("%s\n"%e, 'e') 133 134print_("Done!\n") 135 136sess.close()

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

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

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

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

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

jbpb0

2021/08/19 10:25

ここの質問に今書かれてるエラーは、 https://teratail.com/questions/354796 の「質問への追記・修正」に私が書いた修正を加えたものですけど、その修正は間違ってる(エラーが消えない)わけだから、その修正をしてないオリジナルのコードをTF 2.*対応だけして他はそのままで動かした状態のエラーをここの質問には書いてください
jbpb0

2021/08/19 10:30

上記は、 https://teratail.com/questions/354796 の「質問への追記・修正」に質問者さんが2021/08/18 17:40に書いたエラーのことです コードもそのエラーが出た状態で、下記をやる前の状態から再スタートして、この質問で聞き直してください net_in = tl.layers.InputLayer(x_in, name='input_layer') ↓ 変更 net_in = tl.layers.Input(name='input_layer')(x_in)
jbpb0

2021/08/19 10:32

下記だけやって、他の修正は無かったことにする、ということです import tensorflow as tf ↓ 変更 import tensorflow.compat.v1 as tf tf.disable_v2_behavior()
退会済みユーザー

退会済みユーザー

2021/08/19 10:34

わかりました。 network.pyも import tensorflow.compat.v1 as tf tf.disable_v2_behavior() した状態で、 net_in = tl.layers.InputLayer(x_in, name='input_layer') ↓ 変更 net_in = tl.layers.Input(name='input_layer')(x_in) に直して実行すれば良いのでしょうか? また手伝って頂ければ幸いです。
jbpb0

2021/08/19 10:35

あと、オリジナルのコードのURLを質問に書かないと、質問読んだ人は「network.py」って何? ってなりますよ
jbpb0

2021/08/19 10:39

> network.pyも import tensorflow.compat.v1 as tf tf.disable_v2_behavior() した状態で、 そうです > net_in = tl.layers.InputLayer(x_in, name='input_layer') ↓ 変更 net_in = tl.layers.Input(name='input_layer')(x_in) に直して実行 違います オリジナルに戻すのだから、下記の通り net_in = tl.layers.Input(tf.shape(x_in), name='input_layer')(x_in) ↓ オリジナルに戻す net_in = tl.layers.InputLayer(x_in, name='input_layer')
jbpb0

2022/02/09 21:51 編集

そうすれば下記のエラーが出るはずなので、ここの質問を編集してそれを記載してください Traceback (most recent call last): File "hdrcnn_predict4.py", line 77, in <module> net = network.model(x) File "/Users/****/hdrcnn/hdrcnn-master/network.py", line 50, in model net_in = tl.layers.InputLayer(x_in, name='input_layer') File "/Users/****/Library/Python/3.7/lib/python/site-packages/tensorlayer/layers/deprecated.py", line 178, in InputLayer raise NonExistingLayerError("InputLayer(x, name='a') --> Input(name='a')(x)" + __log__) tensorlayer.layers.deprecated.NonExistingLayerError: InputLayer(x, name='a') --> Input(name='a')(x) Hint: 1) downgrade TF and TL from version 2.x to 1.x. 2) check the documentation of TF and TL version 2.x
退会済みユーザー

退会済みユーザー

2021/08/19 11:04

元に戻したのですが、 自分の中では > net_in = tl.layers.InputLayer(x_in, name='input_layer') ↓ 変更 net_in = tl.layers.Input(name='input_layer')(x_in) この時点での修正は正しかったと思うのですが、なぜ戻したのですか? 自分の中では他にも対応してない関数が残っていると考えれました。
jbpb0

2022/02/09 21:51 編集

> net_in = tl.layers.InputLayer(x_in, name='input_layer') ↓ 変更 net_in = tl.layers.Input(name='input_layer')(x_in) をやっても、その行で File "/Users/****/hdrcnn/hdrcnn-master/network.py", line 50, in model net_in = tl.layers.Input(name='input_layer')(x_in) TypeError: Input() missing 1 required positional argument: 'shape' というエラーが出ますから、その修正は不完全なのです 質問者さんがその修正は正しいと思うのなら、それを採用して、その修正を行った状態で実行した場合のエラーを質問に書いてももちろん構いませんが、その場合は、修正した「network.py」も質問に書いてください そうしないと、他の人には状況が分からないです
退会済みユーザー

退会済みユーザー

2022/02/09 21:51 編集

Network setup: Traceback (most recent call last): File "hdrcnn_predict4.py", line 77, in <module> net = network.model(x) File "/Users/****/hdrcnn/hdrcnn-master/network.py", line 50, in model net_in = tl.layers.Input(tf.shape(x_in), name='input_layer')(x_in) File "/Users/****/Library/Python/3.7/lib/python/site-packages/tensorlayer/layers/inputs.py", line 83, in Input input_layer = _InputLayer(shape, dtype=dtype, name=name) で、shapeが関係してるところがでてるからですか?
jbpb0

2021/08/19 11:50

> TypeError: Input() missing 1 required positional argument: 'shape' とのことなので、Input() には「shape」の指定が必要です その「shape」として「tf.shape(x_in)」を書いてもダメなのは、 https://teratail.com/questions/354796 の「質問への追記・修正」に質問者さんが2021/08/19 16:22に書いたエラーから明らかなので、「tf.shape(x_in)」を追加する修正は不採用でお願いします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問