ニューラルネットワークの構造に関するオンラインガイドを守るために最善を尽くしましたが、何か根本的なものが欠けているはずです。彼らの偏見と一緒に訓練された重みのセットが与えられたら、私は単に予測方法を使わずにそれらの重みを使って手作業で入力を予測したいと思います。カーラを使ってウェイトを使ってニューラルネットワークのデータを手動で予測する方法
ケラスを使用してMNIST画像を使用すると、データを手作業で編集してバイアスの特別な機能を追加しようとしましたが、このような努力は、バイアスをまったく使用しない場合よりもはるかに正確ではありませんkeras predictメソッドを使用します。私のコードは、私の試みに沿って以下にあります。
正確な画像表現のためにケラスメソッド予測を使用し、次に手動でウェイトを取得してバイアスを追加するという貧弱な試みのために、ボトム付近の2つのコメントに注意してください。
from keras.datasets import mnist
import numpy as np
import time
from keras.models import Sequential
from keras.layers import Dense
import tensorflow as tf
from matplotlib import pyplot as plt
comptime=time.time()
with tf.device('/cpu:0'):
tf.placeholder(tf.float32, shape=(None, 20, 64))
seed = 7
np.random.seed(seed)
model = Sequential()
(x_train, _), (x_test, _) = mnist.load_data()
x_train = x_train.astype('float32')/255.
priorShape_x_train=x_train.shape #prior shape of training set
x_train = x_train.reshape((len(x_train), np.prod(x_train.shape[1:])))
x_test = x_test.reshape((len(x_test), np.prod(x_test.shape[1:])))
x_train_shaped=x_train
model.add(Dense(32, input_dim=784, init='uniform', activation='relu'))
model.add(Dense(784, init='uniform', activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adadelta', metrics=['accuracy'])
model.fit(x_train[1:2500], x_train[1:2500], nb_epoch=10)
#proper keras prediction
prediction_real=model.predict(x_train[57:58])
prediction_real=prediction_real.reshape((28,28))
#manual weight prediction attempt
x_train=np.hstack([x_train,np.zeros(x_train.shape[0]).reshape(x_train.shape[0],1)]) #add extra column for bias
x_train[:,-1]=1 #add placeholder as 1
weights=np.vstack([model.get_weights()[0],model.get_weights()[1]]) #add trained weights as extra row vector
prediction=np.dot(x_train,weights) #now take dot product.. repeat pattern for next layer
prediction=np.hstack([prediction,np.zeros(prediction.shape[0]).reshape(prediction.shape[0],1)])
prediction[:,-1]=1
weights=np.vstack([model.get_weights()[2],model.get_weights()[3]])
prediction=np.dot(prediction,weights)
prediction=prediction.reshape(priorShape_x_train)
plt.imshow(prediction[57], interpolation='nearest',cmap='gray')
plt.savefig('myprediction.png') #my prediction, not accurate
plt.imshow(prediction_real,interpolation='nearest',cmap='gray')
plt.savefig('realprediction.png') #in-built keras method, accurate