Это линейная функция. Я даю ему следующие данные:
input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
output = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38]
Я узнал, что без скрытого слоя сеть - это просто перцептрон и, по сути, регресс. Но, скажем, после этого я хочу предсказать y = x ^ 2, что будет нелинейным для аналогичного вывода.
В тензорном потоке вы можете сделать
from __future__ import absolute_import, division, print_function
import pathlib
import pandas as pd
import seaborn as sns
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
print(tf.__version__)
xs = np.array([2,4,6,8,10,12,14,16,18,20, 22, 24, 26, 28])
ys = np.array([4,8,12,16,20,24,28,32,36,40, 44, 48, 52, 56])
model = keras.Sequential([
layers.Dense(64, activation='relu', input_shape=[1]),
layers.Dense(64, activation='relu'),
layers.Dense(1)
])
model.compile(loss='mse')
model.fit(xs, ys, epochs = 500)
print(model.predict([30, 31, 32, 33]))
Я пытаюсь получить свою голову о том, как нейронный net, запущенный с нуля, будет работать при той же длине ввода и той же длине вывода.
В настоящее время я умножаю вектор ввода на случайный вес -> vector_h (Выполнение в функции инициализации)
Вот с чего я начал:
import math
def sigmoid_activation(x):
try:
return 1 / (1 + math.exp(-x))
except:
return 0
def sigmoid_derivative(self, x):
return x * (1 - x)
class NeuralNet:
def __init__(self, training_input, training_output, testing_input):
self.training_input = training_input
self.training_output = training_output
self.testing_input = testing_input
self.epoch = 100
self.weight = [ random.uniform(0, 9) for i in range(len(training_input)) ]
def neuron(self):
return sigmoid_activation(sum([ self.training_input[i] * self.weight[i] for i in range(len(self.training_input)) ])) # I am not sure if this is correct.
def run(self):
for iteration in range(self.epoch):
# Not sure how to go from here
pass
Пара вопросов
- Это больше похоже на перцептрон, чем на нейронную сеть?
- Я с использованием функции активации, чтобы, когда выход является нелинейной функцией, он мог бы также приблизительно предсказать это.
- Нужно ли изменить форму входных данных, чтобы она выглядела как [[1], [2], [3] ]]