define_loser 2020-05-06 19:07 采纳率: 0%
浏览 1414

求问怎么加dropout啊,急急急,在线等

#!/usr/bin/env python

encoding: utf-8

import matplotlib.pylab as plt
from keras.optimizers import Adam
from keras.preprocessing.image import ImageDataGenerator
from keras.layers import Dropout
import numpy as np

from sklearn import datasets
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from keras.models import Sequential
import sys
import tensorflow as tf
sys.path.append("../process")#添加其他文件夹
import data_input#导入其他模块
from traffic_network import LeNet

import numpy as np
from keras.models import Sequential
from keras.layers import Dropout

from keras.layers import Dense
from keras.constraints import max_norm

from keras.optimizers import SGD

sgd = SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False)

def train(aug, model,train_x,train_y,test_x,test_y):
model.add(Dropout(rate=0.0, input_shape=(4,)))

model.compile(loss="categorical_crossentropy",
              optimizer="sgd",metrics=["accuracy"])#配置
#model.fit(train_x,train_y,batch_size,epochs,validation_data=(test_x,test_y))
_history = model.fit_generator(aug.flow(train_x,train_y,batch_size=batch_size),
                    validation_data=(test_x,test_y),steps_per_epoch=len(train_x)//batch_size,
                    epochs=epochs,verbose=1)
#拟合,具体fit_generator请查阅其他文档,steps_per_epoch是每次迭代,需要迭代多少个batch_size,validation_data为test数据,直接做验证,不参与训练
model.save("../predict/traffic_model.h5")
print(_history.history.keys())
plt.style.use("ggplot")#matplotlib的美化样式
plt.figure()
N = epochs
plt.plot(np.arange(0,N),_history.history["loss"],label ="train_loss")#model的history有四个属性,loss,val_loss,acc,val_acc
plt.plot(np.arange(0,N),_history.history["val_loss"],label="val_loss")
plt.plot(np.arange(0,N),_history.history["acc"],label="train_acc")
plt.plot(np.arange(0,N),_history.history["val_acc"],label="val_acc")
plt.title("loss and accuracy")
plt.xlabel("epoch")
plt.ylabel("loss/acc")
plt.legend(loc="best")
plt.savefig("../result/result.png")
plt.show()

if name =="__main__":
channel = 3
height = 32
width = 32
class_num = 8
norm_size = 32#参数
batch_size = 64
epochs = 1000#40
DROPOUT = 0.3
model = LeNet.neural(channel=channel, height=height,
width=width, classes=class_num)#网络

train_x, train_y = data_input.load_data("../data/train", norm_size, class_num)
test_x, test_y = data_input.load_data("../data/test", norm_size, class_num)#生成数据

aug = ImageDataGenerator(rotation_range=30,width_shift_range=0.1,
                   height_shift_range=0.1,shear_range=0.2,zoom_range=0.2,
                   horizontal_flip=True,fill_mode="nearest")#数据增强,生成迭代器

train(aug,model,train_x,train_y,test_x,test_y)#训练

我这里怎么加dropout啊,rate太高val_acc就会变成恒定是1.0然后train_acc识别率也也上不去了,求大神指导啊

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-05-06 22:33
    关注

    model.add(Dropout(rate=0.0, input_shape=(4,)))
    这里不是加上了么

    至于“rate太高val_acc就会变成恒定是1.0然后train_acc识别率也也上不去”可能是你的数据问题、模型问题,很复杂。
    你把dropout放在lenet后面,这个本身就不合理。一般放在danse层后面,softmax前面

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料