Je suis en train de suivre un cours en ligne sur LinkedIn reclassant la construction de modèles via Keras.
Ceci est mon code. (Ceci est censé fonctionner)
import pandas as pd
import keras
from keras.models import Sequential
from keras.layers import *
training_data_df = pd.read_csv("sales_data_training_scaled.csv")
X = training_data_df.drop('total_earnings', axis=1).values
Y = training_data_df[['total_earnings']].values
# Define the model
model = Sequential()
model.add(Dense(50, input_dim=9, activation='relu', name='layer_1'))
model.add(Dense(100, activation='relu', name='layer_2'))
model.add(Dense(50, activation='relu', name='layer_3'))
model.add(Dense(1, activation='linear', name='output_layer'))
model.compile(loss='mean_squared_error', optimizer='adam')
# Create a TensorBoard logger
logger = keras.callbacks.TensorBoard(
log_dir='logs',
write_graph=True,
histogram_freq=5
)
# Train the model
model.fit(
X,
Y,
epochs=50,
shuffle=True,
verbose=2,
callbacks=[logger]
)
# Load the separate test data set
test_data_df = pd.read_csv("sales_data_test_scaled.csv")
X_test = test_data_df.drop('total_earnings', axis=1).values
Y_test = test_data_df[['total_earnings']].values
test_error_rate = model.evaluate(X_test, Y_test, verbose=0)
print("The mean squared error (MSE) for the test data set is: {}".format(test_error_rate))
J'obtiens l'erreur suivante lorsque le code suivant a été exécuté.
Using TensorFlow backend.
2020-01-16 13:58:14.024374: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2020-01-16 13:58:14.037202: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7fc47b436390 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-01-16 13:58:14.037211: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
Traceback (most recent call last):
File "/Users/himsaragallage/Documents/Building_Deep_Learning_apps/06/model_logging final.py", line 35, in <module>
callbacks=[logger]
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/training.py", line 1239, in fit
validation_freq=validation_freq)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/training_arrays.py", line 119, in fit_loop
callbacks.set_model(callback_model)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/callbacks/callbacks.py", line 68, in set_model
callback.set_model(model)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/callbacks/tensorboard_v2.py", line 116, in set_model
super(TensorBoard, self).set_model(model)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_core/python/keras/callbacks.py", line 1532, in set_model
self.log_dir, self.model._get_distribution_strategy()) # pylint: disable=protected-access
AttributeError: 'Sequential' object has no attribute '_get_distribution_strategy'
Process finished with exit code 1
Pendant que j'essayais de déboguer
J'ai découvert que cette erreur était due au fait que j'essaie d'utiliser un tensorboard logger
. Plus précisément. Lorsque j'ajoute callbacks=[logger]
. Sans cette ligne de code, le programme s'exécute sans aucune erreur. Mais Tensorboard ne sera pas utilisé.
Veuillez me suggérer une méthode dans laquelle je peux éliminer l'erreur, exécutez avec succès le script python.
Vous pouvez trouver this post utile.
Donc, au lieu d'importer à partir de keras (c'est-à-dire)
from keras.models import Sequential
importer depuis tensorflow:
from tensorflow.keras.models import Sequential
Et cela s'applique bien sûr à la plupart des autres importations.
C'est juste une chance car je ne peux pas exécuter votre code, mais j'espère que cela vous aidera!
Il semble que votre environnement python) mélange les importations de keras
et tensorflow.keras
. Essayez d'utiliser Sequential module comme ceci:
model = tensorflow.keras.Sequential()
Je recommanderais de ne pas mélanger keras
et tf.keras
. Ce sont des projets différents car keras
est le projet original multi-backend et tf.keras
est la version intégrée à tensorflow. Keras cessera de prendre en charge d'autres backends, mais tensorflow, il est donc conseillé de basculer dessus. Vérifiez https://keras.io/#multi-backend-keras-and-tfkeras
Un moyen simple de le faire est d'importer des keras depuis tensorflow:
import tensorflow as tf
import tensorflow.keras as keras
#import keras
import keras.backend as K
from keras.models import Model, Sequential, load_model
from keras.layers import Dense, Embedding, Dropout, Input, Concatenate
print("Python: "+str(sys.version))
print("Tensorflow version: "+tf.__version__)
print("Keras version: "+keras.__version__)
Python: 3.6.9 (default, Nov 7 2019, 10:44:02)
[GCC 8.3.0]
Tensorflow version: 2.1.0
Keras version: 2.2.4-tf