深度学习实战笔记一:google colab使用入门+mnist数据集入门+Dense层预测

首先kexue上网,进入google云端硬盘
新建->更多->Google Colaboratory
在这里插入图片描述
创建了一个新的.ipynb文件
在这里插入图片描述
可修改该文件的名称
在这里插入图片描述
使用google colab的GPU
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

运行代码,点击链接,操作后粘贴码到下面方框中,回车
from google.colab import drive
drive.mount(’/content/drive/’)

在这里插入图片描述
下面图片表示与google drive连接成功
在这里插入图片描述
运行以上两句代码后,在google colab中可以访问到google drive的文件

示例:

target=processimage.imread("/content/drive/My Drive/app/my_image/test5.jpg")

该图片位于一个名字为app的文件夹里的my_image文件夹
google drive的
使用‘ls’命令查看文件夹的内容

ls '/content/drive/My Drive/app/my_image' 

更改工作目录

因为有些时候,我们可能会直接运行github上别人的代码,而这些代码的路径一般写的是相对路径,google colab运行的时候需要查找绝对路径,使用以下方法可以更改工作目录,避免我们在运行别人项目时需要打开项目修改路径:
(下面的代码中,需要运行的super-resolution.ipynb是在google drive里/Colab_Test/deep-image-prior/目录下)

import os
path = "/content/drive/My Drive/Colab_Test/deep-image-prior/"
os.chdir(path) 
os.listdir(path)
!ls

`
.

以下是观看up主Mike高的视频笔记:

import numpy as np
from keras.datasets import mnist
from keras.models import Sequential,Model
from keras.layers.core import Dense,Activation,Dropout
from keras.utils import np_utils

import matplotlib.pyplot as plt
import matplotlib.image as processimage

#load mnist RAW dataset拉取原始数据
(X_train,Y_train),(X_test,Y_test)=mnist.load_data()
print(X_train.shape,Y_train.shape)
print(X_test.shape,Y_test.shape)

#准备数据
#因为使用的是全连接层,不认识矩阵,只认识向量
#所以需要把数据准备成神经网络需要的数据

X_train = X_train.reshape(60000,28*28)
X_test = X_test.reshape(10000,28*28)
#print(X_train)#可以看到X_train中都是整数,因为使用小数收敛更好,所以可以改成小数

#把所有的数据设置成浮点型

#使用类型设置函数:astype,“set as type" 
X_train = X_train.astype('float32') 
X_test = X_test.astype('float32')

#print(X_train) #打印出来的数据带有小数点,但是其实只是整数加了一个小数点

#归一化,将整数变成真正的小数

#因为颜色总数是255
#这样所有的值都变成了0.几
X_train = X_train/255  
#print(X_train)
#打印train中的某个向量
#print(X_train[9999])

X_test /=255

#prepare basic seups
#给神经网络配置基本参数
batch_size = 1024 #每次要从60000条数据中拿出多少条数据来进行训练

#batch_size会影响精度

nb_class = 10 #要训练几个类
nb_epochs = 4 #类似于 for i in range(4)

#class vectors[0,0,0,0,0,0,0,0,1,0]
print(Y_test.shape)
Y_test = np_utils.to_categorical(Y_test,nb_class)
Y_train = np_utils.to_categorical(Y_train,nb_class)

#print(Y_test[9999])
print(Y_test.shape)


#设置网络结构
model = Sequential()
#1st layer
#设置输出512维,因为是第一层所以要有输入维度
model.add(Dense(512,input_shape=(784,))) #input_dim = 784,
#(784,)表示(784,1),一行数据有784列
#model.add(Activiation('relu'))
model.add(Activation('relu'))
#Dropout从现有网络中拿掉一些数据,防止过拟合
model.add(Dropout(0.2))

#设置第二层
#第二层的输入是从第一层得到的,不需要再设置输入维度
model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dropout(0.2))

#设置第三层
model.add(Dense(10))
#softmax主要用于分类
model.add(Activation('softmax'))

#编译
model.compile(
    loss='categorical_crossentropy',
    optimizer='rmsprop',
    metrics=['accuracy'],
)

#启动网络训练
Trainning = model.fit(
    X_train,Y_train,
    batch_size = batch_size,
    epochs=  nb_epochs,
    validation_data =(X_test,Y_test),
    #取消训练进度条
    verbose = 2,
)

#打印每次训练的结果
Trainning.history

#打印整个网络的设置
Trainning.params


#拉去test里的图
testrun = X_test[9999].reshape(1,784)
#如果这里直接写testrun = X_test[9999],没有reshape的话,下面预测的时候会有输入错误
#print(testrun)
testlabel = Y_test[9999]
print('label:->>',testlabel)
print(testrun.shape)
plt.imshow(testrun.reshape([28,28]))

#判定输出结果
pred = model.predict(testrun)
print('label of test sample Y_test[9999]->>',testlabel)
print('预测结果->>',pred)
#找出最大值下标
print([i.argmax() for i in pred])
a = [i.argmax() for i in pred]
print(a)

#用自己的图片预测一下


target=processimage.imread("/content/drive/My Drive/app/my_image/test5.jpg")
print(target.shape)

plt.imshow(target)
#数据预处理
target_img = target.reshape(1,784)
#把图片数据转换为数组
target_img = np.array(target_img)

target_img = target_img.astype('float32')
target_img/=255

print(target_img)

pred = model.predict(target_img)
#print('预测结果:->',pred)
print([myfinal.argmax() for myfinal in pred ])

print(pred)


代码运行结果:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

拉取的test[9999]的图:
在这里插入图片描述
用模型预测test[9999]
在这里插入图片描述

用自己的图片预测(PS自己创造的28*28的灰度图):
在这里插入图片描述

另附:google colab的快捷键

多行注释:ctrl+/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章