Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Keras Valueerror:从未调用过此模型_Python_Machine Learning_Keras_Neural Network - Fatal编程技术网

Python Keras Valueerror:从未调用过此模型

Python Keras Valueerror:从未调用过此模型,python,machine-learning,keras,neural-network,Python,Machine Learning,Keras,Neural Network,这应该是非常简单的Keras程序。它一直工作到最后一行代码。但我称之为预测方法。当然,我使用了与训练数据相同的输入数据,但这并不重要 从keras.models导入 作为pd进口熊猫 url='1〕https://raw.githubusercontent.com/werowe/logisticRegressionBestModel/master/KidCreative.csv' data=pd.read_csv(url,分隔符=',') 标签=数据['Buy'] features=data.i

这应该是非常简单的Keras程序。它一直工作到最后一行代码。但我称之为预测方法。当然,我使用了与训练数据相同的输入数据,但这并不重要

从keras.models导入
作为pd进口熊猫
url='1〕https://raw.githubusercontent.com/werowe/logisticRegressionBestModel/master/KidCreative.csv'
data=pd.read_csv(url,分隔符=',')
标签=数据['Buy']
features=data.iloc[:,2:16]
模型=顺序()
compile(优化器='rmsprop',loss='binary\u crossentropy',metrics=['accurity'])
model.fit(数据、标签、年代=10,批次大小=32)
模型评估(标签、特征、批次大小=128)
模型预测(标签)
model.summary()
但我得到了这个错误:

model.summary()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/home/walker/tf3/lib/python3.4/site packages/keras/engine/network.py”,第1263行,摘要
“此模型从未被调用过,它的重量”
ValueError:从未调用过此模型,此模型的权重尚未创建,因此无法显示摘要。首先构建模型(例如,通过调用一些测试数据)。

第一步应该是实际构建一个模型,而你不需要这样做;i、 e.在
model=Sequential()
之后,应该有一些
model.添加
语句,以便在编译、拟合模型并使用它进行评估或获取其摘要之前,构建模型

与其从质量模棱两可的回购协议中获得指导,不如从官方示例和教程开始——比如看;在此仅复制与模型相关的部分,我们得到:

model=Sequential()
#没有建立模型,就像你的情况一样
model.compile(loss=keras.loss.categorical_交叉熵,
optimizer=keras.optimizers.Adadelta(),
指标=[‘准确度’])
这应该已经给出了一个错误:

TypeError:无法生成顺序模型:模型为空。首先添加一些层。
我很惊讶你没有报告你的情况

以下是我们应该做的事情(同样,请参阅链接了解全部详细信息):

model=Sequential()
add(Conv2D(32,内核大小=(3,3),
激活='relu',
输入形状=输入形状)
添加(Conv2D(64,(3,3),activation='relu'))
add(MaxPooling2D(池大小=(2,2)))
模型。添加(辍学率(0.25))
model.add(展平())
添加(密集(128,activation='relu'))
模型。添加(辍学率(0.5))
添加(密集(num_类,activation='softmax'))
model.compile(loss=keras.loss.categorical_交叉熵,
optimizer=keras.optimizers.Adadelta(),
指标=[‘准确度’])
model.summary()
#行吗

感谢Matias Valdenegro,我添加了一些输入层并更改了丢失函数。现在,这项工作:

import tensorflow as tf
from keras.models import Sequential
import pandas as pd
from keras.layers import Dense

url = 'https://raw.githubusercontent.com/werowe/logisticRegressionBestModel/master/KidCreative.csv'

data = pd.read_csv(url, delimiter=',')

labels=data['Buy']
features = data.iloc[:,2:16]

model = Sequential()

model.add(Dense(units=64, activation='relu', input_dim=1))
model.add(Dense(units=14, activation='softmax'))

model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])

model.fit(labels, features,
          batch_size=12,
          epochs=10,
          verbose=1,
          validation_data=(labels, features))

model.evaluate(labels, features, verbose=0)

model.summary()
如上所述,在调用mode.summary()之前,模型中必须有层

编辑:我想添加这一点,即使您的模型有层model.summary()如果在第一层中没有“input\u shape”,它可能无法工作

因为在顺序模型中,每个层的输入尺寸(因此参数的数量)是使用前一层的输出尺寸计算的,但要开始此链,需要第一层的输入尺寸。因此,如果没有输入维度,就不可能生成模型摘要


注意:如果您没有明确指定输入维度,keras将在您第一次调用fit()时计算出来。因此,如果您没有指定输入形状,那么您需要在model.summary()之前调用model.fit()

您似乎没有构建任何模型;您确定在
model=Sequential()
之后和
model.compile
之前没有其他代码?没有。这是完整的代码,此处也显示您的模型为空,错误消息是正确的。您应该将层和内容放入Sequentials的实例中—您只是直接从Keras MNIST CNN示例复制了代码。下面是基于Matias Valdenegro建议的工作代码。@WalkerRowe非常欢迎您!别介意,在“只是复制”之前,我必须先复制错误(即修改示例并实际运行修改后的代码),为此,我需要一个可靠的可复制示例,其中有一个已知的问题(我或其他人是如何从你的问题中猜出你有一个14类的分类任务的?),所有这些都需要一些时间,比一个简单的评论要长一些。。。