質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2309閲覧

ValueError: x and y must be the same sizeのエラーを解決したい

HirotoShoji

総合スコア1

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/11/18 08:38

前提・実現したいこと

  • 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()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2021/11/18 08:54

xとyのサイズを把握していないのでしょうか。
jbpb0

2021/11/18 09:10

> x = np.array #700行*2列の行列 > y = np.array #700行*1列の行列 列数が違うからです
HirotoShoji

2021/11/20 02:18

列数が違うのは、理解してるのですが、 このような状況のニュラールネットワークを可視化する方法がわからず困っています。
jbpb0

2021/11/20 09:22 編集

> このような状況のニュラールネットワークを可視化する方法 どのように可視化したいのか、によりますけど たとえば、質問のコードのxの二つの列の数値をそれぞれ、 https://techacademy.jp/magazine/29976 の3D散布図のX, Yとして、質問のコードのyの数値を3D散布図のZとして、表示させるとか
guest

回答1

0

ベストアンサー

このような状況のニュラールネットワークを可視化する方法

どのように可視化したいのか、によりますけど

たとえば、質問のコードのxの二つの列の数値をそれぞれ、
Pythonで3D散布図を作成する方法を現役エンジニアが解説【初心者向け】
の3D散布図のX, Yとして、質問のコードのyの数値を3D散布図のZとして、表示させるとか

投稿2021/11/24 02:24

jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問