前提・実現したいこと
- ValueError: x and y must be the same sizeのエラーを解決したい
- 入力層:2 , 中間層:10 , 出力層:1 のニューラルネットワークをプロットしたい
###現状
ニューラルネットワーク自体は、できているが、結果をプロットできていない。
発生している問題・エラーメッセージ
ValueError: x and y must be the same size
該当のソースコード
Python
1#勾配降下法で、仮想通貨の価格とツイート数のニューラルネットワークを作る 2〜〜〜〜割愛〜〜〜〜 3 4#自分のデータを[配列]で代入する 5x = np.array #700行*2列の行列 6x = x1.values 7y = np.array #700行*1列の行列 8y = y1.values 9 10 11# I:入力層の次元数、H:隠れ層の次元数、O:出力層の次元数 12#bi:バイアス、バイアスは0ベクトルで初期化 13#2層のニューラルネットワークの作成 14I, H, O = 2, 10, 1 15W1 = Variable(0.01 * np.random.randn(I, H)) # Variable(0.01 * np.random.randn(I, H)) 16b1 = Variable(np.zeros(H)) 17W2 = Variable(0.01 * np.random.randn(H, O)) # Variable(0.01 * np.random.randn(H, O)) 18b2 = Variable(np.zeros(O)) 19 20 21#ニューラルネットワークの推論 22def predict(x): 23 #線形変換 24 y = F.linear(x, W1, b1) 25 #活性化関数 26 y = F.sigmoid(y) 27 y = F.linear(y, W2, b2) 28 return y 29 30#学習率 31lr = 0.001 #default : 0.2 32iters = 1000 33 34#ニューラルネットワークの学習 35for i in range(iters): 36 y_pred = predict(x) 37 loss = F.mean_squared_error(y, y_pred)#lossを平均2乗誤差と定義する 38#勾配のリセット 39 W1.cleargrad() 40 b1.cleargrad() 41 W2.cleargrad() 42 b2.cleargrad() 43 loss.backward() 44 45 W1.data -= lr * W1.grad.data 46 b1.data -= lr * b1.grad.data 47 W2.data -= lr * W2.grad.data 48 b2.data -= lr * b2.grad.data 49 #100 回ごとに出力 50 if i % 50== 0: 51 print(i) 52 print(loss) #損失関数、平均2乗誤差をプロット 53 54# Plot 55plt.title("Neural network of cryptocurrency prices and number of tweets") 56plt.scatter(x, y, s=10)#出力の丸のさいず 57plt.xlabel('x') 58plt.ylabel('y') 59t = np.arange(10, 1000, 1)[:, np.newaxis] #間隔の指定 60y_pred = predict(t) 61plt.plot(t, y_pred.data, color='r') 62plt.show()
列数が違うのは、理解してるのですが、
このような状況のニュラールネットワークを可視化する方法がわからず困っています。
> このような状況のニュラールネットワークを可視化する方法
どのように可視化したいのか、によりますけど
たとえば、質問のコードのxの二つの列の数値をそれぞれ、
https://techacademy.jp/magazine/29976
の3D散布図のX, Yとして、質問のコードのyの数値を3D散布図のZとして、表示させるとか
回答1件
あなたの回答
tips
プレビュー