"""使用keras搭建神经网络"""
from keras.models import Sequential
import pandas as pd
#Sequential是一系列网络层按照顺序构成的栈
model = Sequential()
from keras.layers.core import Dense,Dropout,Activation
from keras.optimizers import SGD, Adadelta, Adagrad, RMSprop
import os
from PIL import Image
import numpy as np
import torch as t
#Dense 简单理解为全连接神经元的个数为512
#如果是文本数据集 更适合循环神经网络 ,LSTM等
#简单的加载方法
data=pd.read_csv('')
datatest=pd.read_csv('')
x_train=data.xdata
y_train=data.ydata
x_test =datatest.xdata
y_test =datatest.ydata
#如果是图片数据集 更适合卷积神经网络
#加载方法
class DogCat(data.Dataset):
def __init__(self,root):
imgs = os.listdir(root)
self.imgs = [os.path.join(root,img) for img in imgs]
def __getitem__(self, index):
img_path = self.imgs[index]
y_train = 1 if 'dog' in img_path.split('/')[-1] else 0
pil_img = Image.open(img_path)
array = np.asarray(pil_img)
x_train = t.from_numpy(array)
return x_train,y_train
model.add(Dense(512,input_shape=(784,)))
#激活函数使用relu
model.add(Activation('relu'))
#Dropout 防止过拟合的一种方式
model.add((Dropout(0,2)))
model.add(Dense(512))
model.add(Activation('relu'))
model.add((Dropout(0,2)))
model.add(Dense(10))
model.add(Activation('softmax'))
#打印模型
model.summary()
#使用随机梯度下降算法
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
#compile 接收 loss optimizer metrics 三个参数
model.compile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy'])
history = model.fit(x_train,y_train,batch_size=3,nb_epoch=10,verbose=1,validation_data=(x_test,y_test))
# print('--------------------------------------------------')
# import json
#
# with open("config.json", 'r') as f:
# result = json.load(f)
# print(result)
学习keras1
猜你喜欢
转载自blog.csdn.net/qq_37879432/article/details/80357116
今日推荐
周排行