"Это 10-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."
Это видео, которым делятся со ссылкой на иностранцев.Я надеюсь, что я не только портировщик перевода, но и интегрирую основу оригинального обмена в свой собственный контент. Принесите вам больше интересных проектов ИИ.
<script src="https://cdn.jsdelivr.net/npm/p5@1.4.0/lib/p5.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.4/dist/tf.min.js"></script>
Обучение с подкреплением обычно используется в играх, чтобы позволить агентам играть в игры.Поскольку игровая среда относительно проста и фиксирована, она подходит для изучения обучения с подкреплением.
Идеи дизайна
Здесь мы разрабатываем нейронную сеть, входные данные — это не изображение, а данные изображения в виде вектора, и затем это может отражать информацию о состоянии текущей игры (5-мерный вектор, конкретная информация может относиться к входному содержимому ниже ), а затем пройти через скрытый слой (нейроны из 8 единиц составляют скрытый слой) и вывести вероятности повышения и понижения. проблема классификации
входить
- птица y (координата y)
- y vel (скорость по оси Y)
- расстояние от верхней трубы до ближайшего верхнего положения трубы
- Положение нижней трубы от ближайшей нижней трубы
- х расстояние от трубы
let inputs = [];
inputs[0] = this.y / height;
inputs[1] = closest.top / height;
inputs[2] = closest.bottom / height;
inputs[3] = closest.x / width;
inputs[4] = this.velocity / 10;
На самом деле, идеально вводить изображение, а затем извлекать признаки изображения с помощью сверточной нейронной сети.
вывод
Выведите вероятность того, что два действия будут вниз и вверх соответственно.
- вниз
- вверх
if (output[0] > output[1]) {
this.up();
}
Код
Импорт tensorflow.js
tf.memory()
{unreliable: true, reasons: Array(1), numTensors: 1000, numDataBuffers: 1000, numBytes: 66000}
Создать nn.js
this.brain = new NeuralNetwork(5, 8, 2);
Здесь конструктор получает 3 параметра как a, b, c, которые представляют количество входных, скрытых слоев и выходных узлов соответственно.
class NeuralNetwork{
constructor(a,b,c){
}
}
class NeuralNetwork{
constructor(a,b,c){
this.input_nodes = a;
this.hidden_nodes = b;
this.output_nodes = c;
}
}
Определить модель
Далее создайте модельthis.createModel()
, используемый для создания модели, здесь сtf.sequential
Чтобы создать контейнер последовательности, если вы использовали keras, вы должны быть знакомы с этим API.
class NeuralNetwork{
constructor(a,b,c){
this.input_nodes = a;
this.hidden_nodes = b;
this.output_nodes = c;
this.createModel();
}
createModel(){
this.model = tf.sequential()
}
}
определить скрытый слой
createModel(){
this.model = tf.sequential();
const hiddn = tf.layers.dense({
units:this.hidden_nodes,
inputShape:[this.input_nodes],
activation:'sigmoid'
})
this.model.add(hiddn)
}
Здесь скрытый слой определяется как полностью связанный слой,tf.layers.dense
получает объект,
- Единицы: укажите количество нейронов в этом слое
- inputShape: количество входных узлов
- активация: укажите функцию активации
Если вы не знакомы с нейронными сетями, функция активации заключается в добавлении нелинейных преобразований между слоями нейронной сети.
Определите выходной слой
const output = tf.layers.dense({
units:this.output_nodes,
activation:'softmax'
});
this.model.add(output)
предсказывать
Во время прогнозирования компоненты необходимы для преобразования объектов массива JavaScript в тензорные тензоры тензорного потока,
predict(inputs){
const xs = tf.tensor2d([inputs]);
const ys = this.model.predict(xs);
const outputs = ys.dataSync();
console.log(outputs);
return outputs;
}