前提・実現したいこと
windowsのコマンドプロンプトでpyhonファイルを実行しようとしたと時にエラーがでて、実行できないのですがえらーのいみがわからないので教えていただきたいです。
オセロのAIが作りたくて実装をしようとしていました。
とってきたgitはここです
発生している問題・エラーメッセージ
Traceback (most recent call last): File "train_cycle.py", line 6, in <module> from dual_network import dual_network File "C:\Users\KtysLab\Desktop\osero\tf-dqn-reversi\dual_network.py", line 6, in <module> from tensorflow.keras.layers import Activation, Add, BatchNormalization, Conv2D, Dense, GlobalAveragePooling2D, Input File "C:\Users\KtysLab\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\__init__.py", line 28, in <module> from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import File "C:\Users\KtysLab\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\__init__.py", line 52, in <module> from tensorflow.core.framework.graph_pb2 import * File "C:\Users\KtysLab\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\core\framework\graph_pb2.py", line 16, in <module> from tensorflow.core.framework import node_def_pb2 as tensorflow_dot_core_dot_framework_dot_node__def__pb2 File "C:\Users\KtysLab\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\core\framework\node_def_pb2.py", line 16, in <module> from tensorflow.core.framework import attr_value_pb2 as tensorflow_dot_core_dot_framework_dot_attr__value__pb2 File "C:\Users\KtysLab\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\core\framework\attr_value_pb2.py", line 16, in <module> from tensorflow.core.framework import tensor_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__pb2 File "C:\Users\KtysLab\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\core\framework\tensor_pb2.py", line 16, in <module> from tensorflow.core.framework import resource_handle_pb2 as tensorflow_dot_core_dot_framework_dot_resource__handle__pb2 File "C:\Users\KtysLab\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\core\framework\resource_handle_pb2.py", line 23, in <module> serialized_pb=_b('\n/tensorflow/core/framework/resource_handle.proto\x12\ntensorflow\"r\n\x13ResourceHandleProto\x12\x0e\n\x06\x64\x65vice\x18\x01 \x01(\t\x12\x11\n\tcontainer\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x11\n\thash_code\x18\x04 \x01(\x04\x12\x17\n\x0fmaybe_type_name\x18\x05 \x01(\tBn\n\x18org.tensorflow.frameworkB\x0eResourceHandleP\x01Z=github.com/tensorflow/tensorflow/tensorflow/go/core/framework\xf8\x01\x01\x62\x06proto3') TypeError: __init__() got an unexpected keyword argument 'serialized_options'
該当のソースコード
一番初めのえらーのファイルをのせています
# ==================== # デュアルネットワークの作成 # ==================== # パッケージのインポート from tensorflow.keras.layers import Activation, Add, BatchNormalization, Conv2D, Dense, GlobalAveragePooling2D, Input from tensorflow.keras.models import Model from tensorflow.keras.regularizers import l2 from tensorflow.keras import backend as K import os # パラメータの準備 DN_FILTERS = 128 # 畳み込み層のカーネル数(本家は256) DN_RESIDUAL_NUM = 16 # 残差ブロックの数(本家は19) DN_INPUT_SHAPE = (8, 8, 2) # 入力シェイプ DN_OUTPUT_SIZE = 65 # 行動数(配置先(6*6)+パス(1)) # 畳み込み層の作成 def conv(filters): return Conv2D(filters, 3, padding='same', use_bias=False, kernel_initializer='he_normal', kernel_regularizer=l2(0.0005)) # 残差ブロックの作成 def residual_block(): def f(x): sc = x x = conv(DN_FILTERS)(x) x = BatchNormalization()(x) x = Activation('relu')(x) x = conv(DN_FILTERS)(x) x = BatchNormalization()(x) x = Add()([x, sc]) x = Activation('relu')(x) return x return f # デュアルネットワークの作成 def dual_network(): # モデル作成済みの場合は無処理 if os.path.exists('./model/best.h5'): return # 入力層 input = Input(shape=DN_INPUT_SHAPE) # 畳み込み層 x = conv(DN_FILTERS)(input) x = BatchNormalization()(x) x = Activation('relu')(x) # 残差ブロック x 16 for i in range(DN_RESIDUAL_NUM): x = residual_block()(x) # プーリング層 x = GlobalAveragePooling2D()(x) # ポリシー出力 p = Dense(DN_OUTPUT_SIZE, kernel_regularizer=l2(0.0005), activation='softmax', name='pi')(x) # バリュー出力 v = Dense(1, kernel_regularizer=l2(0.0005))(x) v = Activation('tanh', name='v')(v) # モデルの作成 model = Model(inputs=input, outputs=[p,v]) # モデルの保存 os.makedirs('./model/', exist_ok=True) # フォルダがない時は生成 model.save('./model/best.h5') # ベストプレイヤーのモデル # モデルの破棄 K.clear_session() del model # 動作確認 if __name__ == '__main__': dual_network()
試したこと
各バージョンのチェックを行い、
エラー文を読みましたが意味が分からず手をつけることができていません。
補足情報(FW/ツールのバージョンなど)
各バージョンは
python 3.6.4
tensorflow 1.14.0
Keras 2.1.2
です。
Github のコードはこの書籍 https://www.amazon.co.jp/dp/4862464505 で紹介しているコードみたいですが、TensorFlow のバージョンが書籍で想定しているものと違ったりするのではないでしょうか。どのバージョンの TensorFlow を使うべきか書籍に書いてないですか?
書籍を購入していないので早速購入してみたいとおもいます。
エラーの内容としてはtensorflowのバージョンがあっていないということでいいのですか?
すみません。Github のそのレポジトリはQiita のhttps://qiita.com/sasaco/items/3b0b8565d6aa2a640caf の記事のコードのようで、書籍と直接は関係なかったかもしれません。
ただ書籍の目次にもリバーシのプログラムが出てきていたので、その本を参考にした可能性はあります。(※ 自分は書籍を持っていないので詳しい内容はわかりません。)
https://www.amazon.co.jp/dp/4862464505
Amazon のなか見検索で見れるP67ページに Tensorflow 1.12.1 を使っていると書いてありました。
以下の issue によると、そのエラーは protobuf を最新版にすると直る可能性があります。(protobuf は TensorFlow 内で使っているライブラリです)
https://github.com/tensorflow/models/issues/3995
pip install -U protobuf
コマンドを入力したところ無事解決しました!!
親切に教えていただき本当にありがとうございます!
回答のほうでもう一度うってもらったらすぐにベストアンサーつけさせていただきます!
解決されたようでよかったです。
回答1件
あなたの回答
tips
プレビュー