使用的数据集是mnist数据集
fashion_mnist=keras.datasets.fashion_mnist
(X_train_full,y_train_full),(X_test,y_test)=fashion_mnist.load_data()
X_valid,X_train=X_train_full[:5000]/255.0,X_train_full[5000:]/255.0
y_valid,y_train=y_train_full[:5000],y_train_full[5000:]
import keras.models
from keras.layers import Dense
#先创建顺序模型
model=keras.models.Sequential()
#添加到模型中
model.add(keras.layers.Flatten(input_shape=[28,28]))
model=keras.models.Sequential()
print(model)
print(model.summary())
结果:
或者是直接在序列中传递一个列表
model=keras.models.Sequential([keras.layers.Flatten(input_shape=[28,28]),keras.layers.Dense(300,activation='relu')])
print(model)
print(model.summary())
可以获得层列表,按其索引获取层,也可以按名称获取
h1=model.layers[1]
print(h1.name)
输出
dense
可以通过这种方式获得层名字
通过对指定层使用get_weights()
来获得相应的权重和bias
weight,bias=h1.get_weights()
print(weight)
权重矩阵的形状取决于输入的形状
model.compile(loss="sparse_categorical_crossentropy",optimizer='sgd',metrics=['accuracy'])
需要指定:
①损失函数
②优化器
history=model.fit(X_train,y_train,epochs=30,validation_data=(X_valid,y_valid))
只用了两个层效果比较差
validation_data=(X_valid,y_valid)直接传递验证集
model.fit(X_train,y_train,epochs=30,validation_data=(X_valid,y_valid))
validation_split=0.1设置用于验证的训练集比例
model.fit(X_train,y_train,epochs=30,validation_split=0.1)
pd.DataFrame(history.history).plot(figsize=(8,5))
plt.grid(True)
plt.gca().set_ylim(0,1)
plt.show()
(1)首先检查学习率
(2)尝试使用优化器
(3)调整超参数
model.evaluate(X_test,y_test)
import keras.datasets
将上面的代码改为:
from tensorflow import keras
keras.layers.Concatenate()[(input(),hidden2]
使用列表传入合并的层