Python 属性错误:';顺序';对象没有属性'_获取分销策略&x27;

Python 属性错误:';顺序';对象没有属性'_获取分销策略&x27;,python,python-3.x,tensorflow,keras,Python,Python 3.x,Tensorflow,Keras,我正在通过linkedin学习一门在线课程,通过Keras重新评价模型的构建 这是我的代码。(这声称有效) 将熊猫作为pd导入 进口干酪 从keras.models导入顺序 从keras.layers导入* 培训\u数据\u df=pd.read\u csv(“销售\u数据\u培训\u scaled.csv”) X=培训数据下降(“总收入”,轴=1)。值 Y=培训数据df['总收入]].值 #定义模型 模型=顺序() 添加(密度(50,输入尺寸=9,激活='relu',名称='layer_1')

我正在通过linkedin学习一门在线课程,通过Keras重新评价模型的构建

这是我的代码。(这声称有效)

将熊猫作为pd导入
进口干酪
从keras.models导入顺序
从keras.layers导入*
培训\u数据\u df=pd.read\u csv(“销售\u数据\u培训\u scaled.csv”)
X=培训数据下降(“总收入”,轴=1)。值
Y=培训数据df['总收入]].值
#定义模型
模型=顺序()
添加(密度(50,输入尺寸=9,激活='relu',名称='layer_1'))
model.add(密集型(100,activation='relu',name='layer_2'))
添加模型(密度(50,激活='relu',名称='layer_3'))
model.add(密集(1,activation='linear',name='output\u layer'))
compile(loss='mean\u squared\u error',optimizer='adam')
#创建一个张力板记录器
记录器=keras.callbacks.TensorBoard(
log_dir='logs',
write_graph=True,
直方图_freq=5
)
#训练模型
模型拟合(
X,,
Y
纪元=50,
洗牌=正确,
详细=2,
回调=[logger]
)
#加载单独的测试数据集
测试数据df=pd.read\U csv(“销售数据测试缩放.csv”)
X_测试=测试数据下降('总收入',轴=1)。值
Y_test=测试数据_df['总收入]].值
测试错误率=model.evaluate(X\u测试,Y\u测试,verbose=0)
打印(“测试数据集的均方误差(MSE)为:{}”。格式(测试误差率))
执行以下代码时,我遇到以下错误。

使用TensorFlow后端。
2020-01-16 13:58:14.024374:I tensorflow/core/platform/cpu\u feature\u guard.cc:142]您的cpu支持该tensorflow二进制文件未编译为使用的指令:AVX2 FMA
20201-01-16:13:58: 14.037202:I TysFult/Cys/XLA/Service / Service .CC:168)XLA服务0x7FC47 B436390为平台主机初始化(这不能保证XLA将被使用)。设备:
2020-01-16 13:58:14.037211:I tensorflow/compiler/xla/service/service.cc:176]StreamExecutor设备(0):主机,默认版本
回溯(最近一次呼叫最后一次):
文件“/Users/himsaragallage/Documents/Building_Deep_Learning_apps/06/model_logging final.py”,第35行,在
回调=[logger]
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/training.py”,第1239行,适合
验证频率=验证频率)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/keras/engine/training_arrays.py”,第119行,在fit_循环中
callbacks.set\u模型(callback\u模型)
set_模型中的文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/keras/callbacks/callbacks.py”,第68行
callback.set_model(model)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/keras/callbacks/tensorboard_v2.py”,第116行,在set_模型中
超级(张力板,自我)。集合_模型(模型)
set_模型中的文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/tensorflow_core/Python/keras/callbacks.py”,第1532行
self.log_dir,self.model._get_distribution_strategy())35; pylint:disable=受保护的访问
AttributeError:“Sequential”对象没有属性“\u get\u distribution\u strategy”
进程已完成,退出代码为1
当我尝试调试时

我发现这个错误是因为我试图使用
tensorboard记录器
。更准确地说。当我添加
回调=[logger]
时。如果没有那行代码,程序运行时不会出现任何错误。但张力板不会被使用

请向我推荐一种方法,在这种方法中,我可以成功地运行上述python脚本来消除错误。

您可能会发现post非常有用

因此,不是从keras进口(即)

从tensorflow导入:

from tensorflow.keras.models import Sequential
这当然也适用于大多数其他进口产品


这只是一个幸运的猜测,因为我无法运行您的代码,但希望它能有所帮助

希望您指的是这个

甚至我在使用Tensorflow 2.1版时也遇到了同样的错误。但是,在对
Tensorflow版本降级后,只要对代码稍加修改,我就可以调用
Tensorboard

工作代码如下所示:

import pandas as pd
import keras
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.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 = tf.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))

您的python环境似乎混合了来自
keras
tensorflow.keras
的导入。试着像这样使用顺序模块:

model = tensorflow.keras.Sequential()

我建议不要混合使用
keras
tf.keras
。这些是不同的项目,因为
keras
是原始的多后端项目,
tf。keras
是集成到tensorflow中的版本。Keras将停止支持tensorflow以外的其他后端,因此建议切换到它。检查

一种简单的方法是从tensorflow导入keras:

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__)
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