Wal*_*owe 2 python machine-learning neural-network keras
这应该是非常简单的Keras程序.它一直工作到最后一行代码.但我称之为预测方法.当然,我使用了与训练数据相同的输入数据,但这并不重要.
from keras.models import Sequential
import pandas as pd
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.compile(optimizer='rmsprop' ,loss='binary_crossentropy',metrics=['accuracy'])
model.fit(data, labels, epochs=10, batch_size=32)
model.evaluate(labels, features, batch_size=128)
model.predict(labels)
model.summary()
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
model.summary()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/walker/tf3/lib/python3.4/site-packages/keras/engine/network.py", line 1263, in summary
'This model has never been called, this its weights '
ValueError: This model has never been called, this its weights have not yet been created, so no summary can be displayed. Build the model first (e.g. by calling it on some test data).
Run Code Online (Sandbox Code Playgroud)
第一步应该是实际建立一个你不做的模型; 也就是说,之后model = Sequential(),model.add为了建立模型,应该有一些陈述,在编译之前,拟合它,并用它来评估或得到它的总结.
不要从模糊质量的回购中获得指导,最好从官方示例和教程开始 - 例如在Keras MNIST CNN示例中查看 ; 在这里只复制与模型相关的部分,我们得到:
model = Sequential()
# no model built, as in your case
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
这应该已经出错了:
TypeError: Sequential model cannot be built: model is empty. Add some layers first.
Run Code Online (Sandbox Code Playgroud)
我很惊讶你不报告你的情况.
这是我们应该做的事情(再次,请参阅链接以获取完整的详细信息):
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
activation='relu',
input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
model.summary()
# works OK
Run Code Online (Sandbox Code Playgroud)
小智 5
正如@desertnaut所说,在调用 mode.summary() 之前,模型中必须有层。
编辑:我想补充一点,即使你的模型有层 model.summary() 如果第一层没有“input_shape”,它也可能无法工作。
因为在 Sequential 模型中,每一层的输入维度(因此参数的数量)是使用前一层的输出维度计算的,但是为了开始这个链,需要第一层的输入维度。所以在没有输入维度的情况下不可能生成模型的摘要。
注意:如果你没有明确指定输入维度,那么当你第一次调用 fit() 时,keras 会计算出来。所以如果不指定input_shape,那么就需要在model.summary()之前调用model.fit()
| 归档时间: |
|
| 查看次数: |
5190 次 |
| 最近记录: |