前提
pythonで複数企業の株価や市場といった計130の説明変数から
新たな企業の株価の変動を0から予測するというLSTMモデルの作成をしています。
実装途中で発生したエラーについての質問です。
kerasでの学習で,lossがnanになるため、学習率を下げようと
model.compile(
optimizer = "adam",#最適化アルゴリズム
loss = "mse",#損失関数
metrics = ["mae"]#評価関数
)
を
adam=tf.keras.optimizers.Adam(lr=0.001)
model.compile(
optimizer = adam,#最適化アルゴリズム
loss = "mse",#損失関数
metrics = ["mae"]#評価関数
)
にしたところエラーが発生しました。
発生している問題・エラーメッセージ
ValueError: Could not interpret optimizer identifier: <keras.optimizers.optimizer_v2.adam.Adam object at 0x000002835487C400>``` ### 該当のソースコード ```python import os import numpy as np from sklearn.model_selection import train_test_split from sklearn import preprocessing from matplotlib import pyplot as plt import tensorflow as tf from tensorflow.python.keras.layers import Conv1D, Reshape, LSTM, Dense, Input from tensorflow.python.keras.models import Model from tensorflow.keras.utils import plot_model import pandas as pd #シーケンスに沿ったデータを作成する関数-------------------------------------------------------- def make_dataset(): for i in range(1,21): for j in range(13,21): path="E:\\最強データ2_フレーム揃え\\喜び_13~20\\Actor_"+str(i)+"\\合体"+str(j)+".csv" df=pd.read_csv(path,index_col=0,header=0) df.pop("AU12_r") yy=df["AU06_r"] df=df.apply(lambda x: (x-x.min())/(x.max() - x.min()), axis=0) yyy=yy.values.astype(float) preprocessing.minmax_scale(yyy) data = df.values.astype(float) x.append(data) y.append(yyy) return np.array(x), np.array(y) x=list() y=list() x,y= make_dataset() x_train, x_valid, y_train, y_valid = train_test_split(x, y, test_size = 1) print("3次元リストの要素数: " + str(len(x))) print("3次元リストの中にある2次元リストの要素数: " + str(len(x[1]))) print("3次元リストの中にあるリストの要素数: " + str(len(x[0][2]))) print("2次元リストの要素数: " + str(len(y))) print("2次元リストの中にあるリストの要素数: " + str(len(y[2]))) #データの種類(160)*データの長さ(108)*説明変数(130) inputs=Input(shape=(108,130)) x = LSTM(130, return_sequences = True)(inputs) x = Conv1D(1, 3, padding = "same", activation = "linear")(x) model = Model(inputs, x) adam=tf.keras.optimizers.Adam(lr=0.001) model.compile( optimizer = adam,#最適化アルゴリズム loss = "mse",#損失関数 metrics = ["mae"]#評価関数 ) plot_model(model) model.fit( x_train, y_train, epochs = 1, batch_size = 32, validation_data = (x_valid, y_valid) ) print(model.summary()) pred = model.predict(x_valid) print(pred.shape) print(pred[0])
試したこと
調べてみたところ,kerasとtensorflowのバージョンが~という解決策が多く見受けられ,再インストールしましたが、問題が発生した時期がまちまちなため解決策ごとのバージョンも違うようで...
補足情報(FW/ツールのバージョンなど)
keras 2.10.0
Keras-Preprocessing 1.1.2
tensorflow 2.11.0
tensorflow-estimator 2.10.0
tensorflow-gpu 2.10.1
tensorflow-intel 2.11.0
tensorflow-io-gcs-filesystem 0.28.0
