質問編集履歴
2
追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,8 +4,8 @@
|
|
4
4
|
Qiitaの自分でニューラルネットワークを作ろうの記事https://qiita.com/takahiro_itazuri/items/d2bea1c643d7cca11352#comment-a59cd26161ee56ea1220
|
5
5
|
|
6
6
|
これはニューラルネットワークの「精度測定」プログラムですが、これを用いて「画像認識」的なものの基盤を作りたいと思います。
|
7
|
-
具体的には、まず前半に自分のプログラム(指定された画像を読み込み、様々な方法で数値化してリストにする)を追加して、後半にこの記事のプログラムを適当な形にいじって、大体そのままで使いたいのです。
|
8
7
|
|
8
|
+
|
9
9
|
そこでなのですが、記事のプログラムの
|
10
10
|
|
11
11
|
```python
|
@@ -29,7 +29,7 @@
|
|
29
29
|
val = training_data_list[i].split(',')
|
30
30
|
の部分の、training_data_list[i]を自分の作ったデータに変えて読み込みたいのですが、
|
31
31
|
その自分のデータというのが、紛らわしいのですが同じ名前でtraining_data_listというのですが、それをprintした結果print(training_data_list)は、
|
32
|
-
[0,
|
32
|
+
[0,・・・ 10]
|
33
33
|
これになります。
|
34
34
|
また、このデータを用いるために、記事のプログラムの
|
35
35
|
inodes = 784
|
@@ -38,9 +38,9 @@
|
|
38
38
|
に変更しています(,の数が59個だから)。
|
39
39
|
|
40
40
|
ここで、まずこの記事のプログラムは、training_data.csvという、
|
41
|
-
5,0
|
42
|
-
0,0,
|
43
|
-
4,0,0,0,0,0,0,
|
41
|
+
5,0・・・18,126・・・略
|
42
|
+
0,・・・0,48・・・略
|
43
|
+
4,0,・・・0,0,0,0,0,67・・・略
|
44
44
|
まぁ大体こんな感じのデータを読み込んでいてtraining_data_listにしているらしく、その読み込み方としては、
|
45
45
|
training_data_list[0]に1行目、training_data_list[1]に2行目、training_data_list[3]に3行目・・・みたいにしているようです。
|
46
46
|
|
@@ -50,7 +50,7 @@
|
|
50
50
|
print(val)
|
51
51
|
```
|
52
52
|
すると、
|
53
|
-
['5', '0', '0
|
53
|
+
['5',・・・ '0', '0\n']
|
54
54
|
|
55
55
|
['0', ・・・(略)・・・ '0', '0\n']
|
56
56
|
|
@@ -59,7 +59,7 @@
|
|
59
59
|
のようになります、上から、forの1周目、2周目,3周目という事かと、また、1周目は全て表示しましたが、2,3周目は省略しています。
|
60
60
|
|
61
61
|
で、自分のデータ(同名の、training_data_list)は
|
62
|
-
[0,
|
62
|
+
[0, ・・・ 10]
|
63
63
|
これであるので、単純に「1行目」しか存在しません。後に2,3,4行目も作っていきたいのですが、今は1行目だけ、つまりforで回すのは1周分という事になります。
|
64
64
|
1周だとforの必要はありませんが、今後の事も考えてforを残しておきたい、しかし、これを上手く変換する方法が分かりません。
|
65
65
|
|
@@ -97,4 +97,133 @@
|
|
97
97
|
|
98
98
|
これって、行列の掛け算定義不能って事なんですかね??問題はそこだけ?
|
99
99
|
|
100
|
-
どうすればいいのかな。
|
100
|
+
どうすればいいのかな。
|
101
|
+
|
102
|
+
一応この部分については解決しました、で、この後なんですが、
|
103
|
+
|
104
|
+
```python
|
105
|
+
# テスト
|
106
|
+
scoreboard = []
|
107
|
+
for record in test_data_list:
|
108
|
+
idata = (np.array(test_data_list) / 255.0 * 0.99) + 0.01
|
109
|
+
predict = nn.feedforward(idata)
|
110
|
+
plabel = np.argmax(predict)
|
111
|
+
print(predict)
|
112
|
+
print(plabel)
|
113
|
+
pass
|
114
|
+
```
|
115
|
+
|
116
|
+
このように、predict,plabelをprintしてみました、その結果が以下です。
|
117
|
+
|
118
|
+
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
|
119
|
+
#epoch 0
|
120
|
+
train: 0 / 60
|
121
|
+
#epoch 1
|
122
|
+
train: 0 / 60
|
123
|
+
#epoch 2
|
124
|
+
train: 0 / 60
|
125
|
+
[[1.90071670e-02]
|
126
|
+
[1.31633748e-02]
|
127
|
+
[1.80385474e-02]
|
128
|
+
[1.57785464e-02]
|
129
|
+
[2.16556495e-02]
|
130
|
+
[2.28404329e-02]
|
131
|
+
[2.20554863e-02]
|
132
|
+
[2.04877793e-02]
|
133
|
+
[1.74221735e-02]
|
134
|
+
[5.64875592e-05]]
|
135
|
+
5
|
136
|
+
[[1.90071670e-02]
|
137
|
+
[1.31633748e-02]
|
138
|
+
[1.80385474e-02]
|
139
|
+
[1.57785464e-02]
|
140
|
+
[2.16556495e-02]
|
141
|
+
[2.28404329e-02]
|
142
|
+
[2.20554863e-02]
|
143
|
+
[2.04877793e-02]
|
144
|
+
[1.74221735e-02]
|
145
|
+
[5.64875592e-05]]
|
146
|
+
5
|
147
|
+
・・・
|
148
|
+
5
|
149
|
+
[[1.90071670e-02]
|
150
|
+
[1.31633748e-02]
|
151
|
+
[1.80385474e-02]
|
152
|
+
[1.57785464e-02]
|
153
|
+
[2.16556495e-02]
|
154
|
+
[2.28404329e-02]
|
155
|
+
[2.20554863e-02]
|
156
|
+
[2.04877793e-02]
|
157
|
+
[1.74221735e-02]
|
158
|
+
[5.64875592e-05]]
|
159
|
+
5
|
160
|
+
[[1.90071670e-02]
|
161
|
+
[1.31633748e-02]
|
162
|
+
[1.80385474e-02]
|
163
|
+
[1.57785464e-02]
|
164
|
+
[2.16556495e-02]
|
165
|
+
[2.28404329e-02]
|
166
|
+
[2.20554863e-02]
|
167
|
+
[2.04877793e-02]
|
168
|
+
[1.74221735e-02]
|
169
|
+
[5.64875592e-05]]
|
170
|
+
5
|
171
|
+
[[1.90071670e-02]
|
172
|
+
[1.31633748e-02]
|
173
|
+
[1.80385474e-02]
|
174
|
+
[1.57785464e-02]
|
175
|
+
[2.16556495e-02]
|
176
|
+
[2.28404329e-02]
|
177
|
+
[2.20554863e-02]
|
178
|
+
[2.04877793e-02]
|
179
|
+
[1.74221735e-02]
|
180
|
+
[5.64875592e-05]]
|
181
|
+
5
|
182
|
+
[[1.90071670e-02]
|
183
|
+
[1.31633748e-02]
|
184
|
+
[1.80385474e-02]
|
185
|
+
[1.57785464e-02]
|
186
|
+
[2.16556495e-02]
|
187
|
+
[2.28404329e-02]
|
188
|
+
[2.20554863e-02]
|
189
|
+
[2.04877793e-02]
|
190
|
+
[1.74221735e-02]
|
191
|
+
[5.64875592e-05]]
|
192
|
+
5
|
193
|
+
[[1.90071670e-02]
|
194
|
+
[1.31633748e-02]
|
195
|
+
[1.80385474e-02]
|
196
|
+
[1.57785464e-02]
|
197
|
+
[2.16556495e-02]
|
198
|
+
[2.28404329e-02]
|
199
|
+
[2.20554863e-02]
|
200
|
+
[2.04877793e-02]
|
201
|
+
[1.74221735e-02]
|
202
|
+
[5.64875592e-05]]
|
203
|
+
5
|
204
|
+
[[1.90071670e-02]
|
205
|
+
[1.31633748e-02]
|
206
|
+
[1.80385474e-02]
|
207
|
+
[1.57785464e-02]
|
208
|
+
[2.16556495e-02]
|
209
|
+
[2.28404329e-02]
|
210
|
+
[2.20554863e-02]
|
211
|
+
[2.04877793e-02]
|
212
|
+
[1.74221735e-02]
|
213
|
+
[5.64875592e-05]]
|
214
|
+
5
|
215
|
+
[[1.90071670e-02]
|
216
|
+
[1.31633748e-02]
|
217
|
+
[1.80385474e-02]
|
218
|
+
[1.57785464e-02]
|
219
|
+
[2.16556495e-02]
|
220
|
+
[2.28404329e-02]
|
221
|
+
[2.20554863e-02]
|
222
|
+
[2.04877793e-02]
|
223
|
+
[1.74221735e-02]
|
224
|
+
[5.64875592e-05]]
|
225
|
+
5
|
226
|
+
performance: nan
|
227
|
+
/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:160: RuntimeWarning: invalid value encountered in double_scalars
|
228
|
+
|
229
|
+
これが何を意味しているのか、今後どのように変更を加えれば良いのか、模索中です、ヒントをください。
|
1
補足しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -28,9 +28,14 @@
|
|
28
28
|
ここの、
|
29
29
|
val = training_data_list[i].split(',')
|
30
30
|
の部分の、training_data_list[i]を自分の作ったデータに変えて読み込みたいのですが、
|
31
|
-
その自分のデータというのが、紛らわしいのですが同じ名前で
|
31
|
+
その自分のデータというのが、紛らわしいのですが同じ名前でtraining_data_listというのですが、それをprintした結果print(training_data_list)は、
|
32
32
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 6, 0, 0, 10, 2, 2, 2, 2, 2, 2, 2, 2, 10, 10, 2, 2, 2, 2, 2, 2, 2, 2, 10]
|
33
33
|
これになります。
|
34
|
+
また、このデータを用いるために、記事のプログラムの
|
35
|
+
inodes = 784
|
36
|
+
の部分は、
|
37
|
+
inodes = 59
|
38
|
+
に変更しています(,の数が59個だから)。
|
34
39
|
|
35
40
|
ここで、まずこの記事のプログラムは、training_data.csvという、
|
36
41
|
5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,18,18,18,126・・・略
|
@@ -73,4 +78,23 @@
|
|
73
78
|
かといって、一気に
|
74
79
|
val = [str(x) for x in test_data_list[e]]
|
75
80
|
とか使ってfor文外でlist化してしまえば、for文が使えなくて色々不便ですし・・・
|
76
|
-
いまいちよく分かっていません、たぶんリスト、文字、数値の区別がごちゃごちゃになっているからだと思うのですが・・・どうすればいいんでしょうか。
|
81
|
+
いまいちよく分かっていません、たぶんリスト、文字、数値の区別がごちゃごちゃになっているからだと思うのですが・・・どうすればいいんでしょうか。
|
82
|
+
|
83
|
+
試した事
|
84
|
+
記事のプログラムに入る前に、
|
85
|
+
```python
|
86
|
+
training_data_list = [str(x) for x in test_data_list]
|
87
|
+
```
|
88
|
+
と書いて、
|
89
|
+
for文内で、
|
90
|
+
```python
|
91
|
+
val = training_data_list[i].split(',')
|
92
|
+
```
|
93
|
+
と書き換えた所、
|
94
|
+
|
95
|
+
ValueError: shapes (100,59) and (0,1) not aligned: 59 (dim 1) != 0 (dim 0)
|
96
|
+
というエラーが出ました。
|
97
|
+
|
98
|
+
これって、行列の掛け算定義不能って事なんですかね??問題はそこだけ?
|
99
|
+
|
100
|
+
どうすればいいのかな。
|