小白玩机器学习(6)--- 基于Tensorflow,2024年最新计算机毕设要交代码吗

2. 添加网络

根据上图添加神经网络:(train.js)

(1)添加卷积层,大小为28*28,其中卷积核大小为5,使用的激活函数为relu;(2)添加池化层,尺寸为2*2;

(2)添加卷积层,卷积核个数为5,激活函数为relu;

(3)添加池化层;

(4)为了提高准确路,在此处添加dropout,并且rate=0.5;

(5)降维后添加全连接层,激活函数为relu;

(6)使用adam()优化器并设置rate=0.002,损失函数为softmaxCrossEntrop;至此完成了网络的配置。

// 初始化模型

const model = tf.sequential();

// Convolutional layer 二维卷积层

model.add(tf.layers.conv2d({

inputShape: [28, 28, 1],   // 1:颜色黑白

kernelSize: 5,   // 卷积核大小为5

filters: 16,     // 卷积核数量为16

strides: 1,    // 步长为1

activation: ‘relu’,    // 激活函数为relu

kernelInitializer: ‘varianceScaling’   // 初始化卷积核

}));

// 经过这层变化[28,28,1]–>[14,14,16]

// Pooling layer 二维池化层

model.add(tf.layers.maxPooling2d({

poolSize: [2, 2],   // 尺寸

strides: [2, 2]    // 步长

}));

// Convolutional layer 二维卷积层

model.add(tf.layers.conv2d({

kernelSize: 5,   // 卷积核

filters: 32,

strides: 1,

activation: ‘relu’,

kernelInitializer: ‘varianceScaling’

}));

// Pooling layer 池化层

model.add(tf.layers.maxPooling2d({

poolSize: [2, 2],

strides: [2, 2]

}));

// 添加dropout  rate = 0.5随机去掉一半

model.add(tf.layers.dropout({

rate: 0.5

}));

// Flatten layer 降维

model.add(tf.layers.flatten());

// Dense layer

model.add(tf.layers.dense({//全连接层

units: 128,

activation: ‘relu’

}));

model.add(tf.layers.dense({

units: 10,   // 对应0-10数字

}));

const OPT = tf.train.adam(0.002)  // 优化器

const config = {

optimizer: OPT,

loss: tf.losses.softmaxCrossEntropy, // 损失函数

}

model.compile(config);  //模型设置好配置

3. 加载数据

由于训练集数量比较大,这里选取了前60000个数据进行训练(train.js)

console.log(“载入数据”)

inputs = tf.tensor2d(mnist.train_images.slice(0, 60000));

outputs_org = tf.tensor1d(mnist.train_labels.slice(0, 60000));// 标签Y

outputs = tf.oneHot((outputs_org), 10);//全部对应到0-9  [0,0,0,0,0,0,0,1]

console.log(“重组数据”)  // 归一化除以255 变成0-1

inputs = tf.div(inputs, tf.scalar(255.0));

inputs = inputs.reshape([60000, 28, 28, 1]);  // 格式化28* 28* 1

4. 训练模型

这里使用15个epoh迭代,并且实时输出每一轮结果的loss.(train.js)

async function train() {

for (let i = 1; i < 15; i++) {

const h = await model.fit(inputs, outputs, {

atchSize: 200,

epochs: 1

);

console.log("Loss after Epoch " + i + " : " + h.history.loss[0]);

}

const saveResults = await model.save(‘indexeddb://my-model-6’);

console.log(“模型已经保存”);

select(‘#modelStatus’).html(‘模型已经训练完成并保存’);

}

5. 其中需要对模型进行保存和重加载

// 保存训练模型到浏览器数据库my-model-5

const saveResults = await model.save(‘indexeddb://my-model’);

// 加载已经保存的my-model模型,不需要重新训练

const model = await tf.loadLayersModel(‘indexeddb://my-model’);

6. 测试训练准确率

首先加载测试数据,这里选择前10000个,之后进行训练(load.js)

console.log(“加载测试数据。。”)

inputs_test = tf.tensor2d(mnist.test_images.slice(0, 10000));

inputs_test = tf.div(inputs_test,tf.scalar(255.0));

inputs_test = inputs_test.reshape([10000, 28, 28, 1]);

outputs_test = tf.tensor1d(mnist.test_labels.slice(0, 10000));

print(outputs_test.shape);

console.log(“测试数据加载完成”)

async function test() {

const model = await tf.loadLayersModel(‘indexeddb://my-model’);

console.log(‘加载已经保存的模型’);

output_tem = model.predict(inputs_test);

label = tf.argMax(output_tem, 1);

// 打印测试准确率

tf.div(tf.sum(outputs_test.equal(label)), mnist.test_labels.length).print();

result = tf.div(tf.sum(outputs_test.equal(label)), mnist.test_labels.length);

select(‘#modelStatus’).html(‘模型已经加载完成:’ + result);

}

7. 手写体识别可视化

实时鼠标在区域画数字,会进行预测,点击空格键删除。(recognition.js)

(参考链接:https://github.com/CodingTrain/Toy-Neural-Network-JS/blob/master/examples/mnist)

let img = user_digit.get();

if(!user_has_drawing) {

return img;

}

let inputs = [];

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数同学面临毕业设计项目选题时,很多人都会感到无从下手,尤其是对于计算机专业的学生来说,选择一个合适的题目尤为重要。因为毕业设计不仅是我们在大学四年学习的一个总结,更是展示自己能力的重要机会。

因此收集整理了一份《2024年计算机毕业设计项目大全》,初衷也很简单,就是希望能够帮助提高效率,同时减轻大家的负担。
img
img
img

既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!

由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频

如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)
img

图片转存中…(img-O4ySSkOq-1712577687350)]
[外链图片转存中…(img-BCiCrekr-1712577687351)]
[外链图片转存中…(img-G9KtLcSV-1712577687351)]

既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!

由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频

如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)
[外链图片转存中…(img-dC5CNvOL-1712577687352)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值