Ravi de vous rencontrer, c'est mon premier message sur qiita. Je pense qu'il y a de nombreux endroits qui ne peuvent être atteints.
L'exemple de code du framework de réseau neuronal est principalement un problème de classification, et il n'y a pas beaucoup d'exemples de régression, donc je l'ai essayé.
Il y avait un endroit où ça allait. Je veux savoir comment bien écrire, alors je vais le poster.
** J'ai écrit plus de 1000 lignes pour faire la même chose avec theano, mais 98 lignes avec chainer. ** Migrez vers le chainer.
Cela a bien fonctionné sur le GPU.
_ ** Conclusion: chainer génial ** _
python
#la cible est des données de réponse correctes
#mnist.Si c'est py, il s'écrit ↓
target = diabetes['target'].astype(np.float32) #Avec cela, cela ne fonctionnera pas si le nombre de mini lots est de 2 ou plus
S'il s'agit de ↑, une erreur de valeur comme ↓ apparaîtra (13 correspond à la taille du lot).
ValueError: non-broadcastable output operand with shape (1,30) doesn't match the broadcast shape (13,30)
À la suite d'essais et d'erreurs, cela a fonctionné.
python
#Je dois remodeler
target = diabetes['target'].astype(np.float32).reshape(len(diabetes['target']), 1)
python
n_units = 30
model = FunctionSet(l1=F.Linear(10, n_units),
l2=F.Linear(n_units, n_units),
l3=F.Linear(n_units, 1))
python
optimizer = optimizers.AdaDelta(rho=0.9)
python
# Neural net architecture
def forward(x_data, y_data, train=True):
x, t = Variable(x_data), Variable(y_data)
h1 = F.dropout(F.relu(model.l1(x)), train=train)
h2 = F.dropout(F.relu(model.l2(h1)), train=train)
y = model.l3(h2)
#Renvoie l'erreur quadratique moyenne et les résultats de prédiction
#Le résultat de la prédiction est renvoyé car le coefficient de corrélation est calculé ultérieurement avec le résultat de la prédiction et les données de réponse correctes.
return F.mean_squared_error(y, t), y
Puisque le taux de réponse correct ne peut être donné, la même évaluation que la classification ne peut pas être faite.
Comme il est difficile de comprendre s'il ne s'agit que d'une erreur, utilisez-vous généralement la valeur R 2 </ sup>?
Pour des raisons personnelles, nous avons évalué le coefficient de corrélation entre la valeur prédite et les données de réponse correctes.
La ligne qui calcule le coefficient de corrélation devient super sale à cause de la dépendance (voir ci-dessus).
python
pearson = np.corrcoef(np.asarray(preds).reshape(len(preds),), np.asarray(y_test).reshape(len(preds),))