30,718
社区成员
发帖
与我相关
我的任务
分享话说有没有人教我逐层运算的算法(js),我不会啊ε=ε=ε=ε=ε=ε=┌(; ̄◇ ̄)┘
单个神经元训练的结果很不好,100000次(-595,595)训练正确率%50
共同努力!
欢迎来到AI的世界!如果你像许多人一样,对AI充满好奇并希望深入了解其原理和实践,那么你来对地方了。AI领域广泛且深入,但通过系统的学习和实践,你将能够掌握其核心概念和技术。
神经网络是AI的核心组成部分,模拟人脑神经元的工作方式。它由输入层、隐藏层和输出层组成,每层包含多个节点(或称为“神经元”)。神经元之间通过权重连接,权重决定了信号从一个神经元传递到另一个神经元的强度。

前向传播是指输入数据通过神经网络的各层,最终生成输出的过程。反向传播则是根据输出误差调整权重的过程,以优化网络性能。
特点:被誉为深度学习领域的圣经,详细介绍了深度学习的理论和实践,包括神经网络、卷积神经网络(CNN)、循环神经网络(RNN)等。

缺点:难度较高,需要一定的数学基础。
特点:使用Keras框架,通过Python语言介绍深度学习的应用。
优点:实战性强,适合希望通过实践学习深度学习的读者。

缺点:对理论讲解相对较少。
特点:采用Jupyter Notebook形式,提供交互式学习体验。
优点:易于上手,适合初学者。
缺点:内容相对浅显,不适合深入研究。
特点:全面介绍人工智能的基本原理和方法,包括搜索算法、知识表示、推理、规划等。
优点:内容广泛,适合了解AI全貌的读者。
缺点:深度不够,对特定领域的讲解有限。
AI领域广阔且充满挑战,但通过不断学习和实践,你将能够掌握其精髓。上述书籍各有侧重,你可以根据自己的需求和兴趣选择合适的书籍开始你的AI之旅。
| 推荐书籍 | 图书特点 |
|---|---|
| 《深度学习》 | 作者:Ian Goodfellow、Yoshua Bengio、Aaron Courville,内容全面,适合深入学习 |
| 《Python深度学习》 | 作者:François Chollet,使用Keras框架,实战性强 |
| 《动手学深度学习》 | 作者:李飞飞、李沐、Aston Zhang等,交互式学习体验,易于上手 |
| 《人工智能:一种现代方法》 | 作者:Stuart Russell、Peter Norvig,内容广泛,适合了解AI全貌 |
筛选出来了强化学习
function layerByLayerAlgorithm(X, Y, hiddenLayers, iterations, learningRate) {
// 初始化权重和偏置
const weights = [];
const biases = [];
for (let i = 0; i < hiddenLayers.length; i++) {
weights.push(Math.random() * 2 - 1);
biases.push(Math.random() * 2 - 1);
}
for (let i = 0; i < iterations; i++) {
// 前向传播
const A = X;
const Z = [];
for (let j = 0; j < hiddenLayers.length; j++) {
const activation = sigmoid(A.dot(weights[j]) + biases[j]);
Z.push(activation);
A = activation;
}
const output = sigmoid(Z[Z.length - 1].dot(weights[weights.length - 1]) + biases[biases.length - 1]);
// 反向传播
const errors = [];
for (let j = 0; j < Y.length; j++) {
errors.push(Y[j] - output[j]);
}
const deltas = [];
for (let j = Z.length - 1; j >= 0; j--) {
const delta = errors.map((error, k) => error * sigmoidDerivative(Z[j][k]));
deltas.unshift(delta);
if (j > 0) {
const activation = Z[j - 1];
delta = delta.map((d, k) => d * activation[k]);
errors = delta;
}
}
// 更新权重和偏置
for (let j = 0; j < hiddenLayers.length; j++) {
weights[j] += learningRate * Z[j].transpose().dot(deltas[j]);
biases[j] += learningRate * deltas[j];
}
weights[weights.length - 1] += learningRate * output.transpose().dot(errors);
biases[biases.length - 1] += learningRate * errors;
}
return weights, biases;
}
function sigmoid(x) {
return 1 / (1 + Math.exp(-x));
}
function sigmoidDerivative(x) {
return x * (1 - x);
} 试试这个