Domanda

Sto cercando di capire alcune semplice caso rete neurale utilizzando Theano. Il sito deeplearning.net dà il seguente codice semplice per l'attuazione di un programma di regressione logistica per un caso semplice:

import numpy
import theano
import theano.tensor as T
rng = numpy.random

N = 400
feats = 784
D = (rng.randn(N, feats), rng.randint(size=N, low=0, high=2))
training_steps = 10000

# Declare Theano symbolic variables
x = T.matrix("x")
y = T.vector("y")
w = theano.shared(rng.randn(feats), name="w")
b = theano.shared(0., name="b")
print("Initial model:")
print(w.get_value())
print(b.get_value())

# Construct Theano expression graph
p_1 = 1 / (1 + T.exp(-T.dot(x, w) - b))   # Probability that target = 1
prediction = p_1 > 0.5                    # The prediction thresholded
xent = -y * T.log(p_1) - (1-y) * T.log(1-p_1) # Cross-entropy loss function
cost = xent.mean() + 0.01 * (w ** 2).sum()# The cost to minimize
gw, gb = T.grad(cost, [w, b])             # Compute the gradient of the cost
                                          # (we shall return to this in a
                                          # following section of this tutorial)

# Compile
train = theano.function(
          inputs=[x,y],
          outputs=[prediction, xent],
          updates=((w, w - 0.1 * gw), (b, b - 0.1 * gb)))
predict = theano.function(inputs=[x], outputs=prediction)

# Train
for i in range(training_steps):
    pred, err = train(D[0], D[1])

print("Final model:")
print(w.get_value())
print(b.get_value())
print("target values for D:")
print(D[1])
print("prediction on D:")
print(predict(D[0]))

ho capito la maggior parte di esso, p_1 è la funzione di regressione logistica, la previsione è se il valore sarà nella classe 0 classe o 1, xent è la funzione di perdita, vale a dire quanto lontano dalla corretta è la nostra previsione. Non capisco la riga successiva, il costo. il costo non dovrebbe essere pari al xent, vale a dire la perdita? Qual è la funzione di costo che rappresenta qui? Inoltre, perché è la polarizzazione inizialmente impostato su 0 e non un numero casuale come i pesi?

È stato utile?

Soluzione

Non capisco la riga successiva, il costo. il costo non dovrebbe essere pari al xent, vale a dire la perdita? Qual è la funzione di costo che rappresenta qui?

Il costo è l'errore (xent.mean ()) + qualche regolarizzazione (0,01 * (w ** 2) .sum ())

Perché il bias inizialmente impostato su 0 e non un numero casuale come i pesi?

E 'possibile e comune per inizializzare le distorsioni a zero, poiché le ultime asimmetria è fornita dai piccoli numeri casuali nei pesi.

qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top