質問編集履歴

1

作成コードとエラー内容の記入

2018/10/21 06:36

投稿

tasuke
tasuke

スコア53

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,171 @@
1
1
  現在、DeepLearningの学習をしています。ゼロから作るDeep Learningを参考に学習しています。しかし、モデルの評価やデータセット内の1画像を分類する例は載っているのですが、肝心の実際に自分が解析したい画像をどのように処理して、どのようにモデルに読み込ませるのかという実践的な部分がありませんでした。また、ネットで調べてみても私の力では見つけることが出来ませんでした。
2
2
 
3
3
   作成した学習モデルを実際に使ってみるというような内容のことが書かれている本やサイト等はありませんか?回答よろしくお願いします。
4
+
5
+
6
+
7
+ 作成したコードを載せておきます。
8
+
9
+ ```python3
10
+
11
+ from sklearn.datasets import fetch_mldata
12
+
13
+
14
+
15
+ mnist = fetch_mldata('MNIST original', data_home=".")
16
+
17
+ X = mnist.data / 255
18
+
19
+ y = mnist.target
20
+
21
+ import matplotlib.pyplot as plt
22
+
23
+
24
+
25
+
26
+
27
+ plt.imshow(X[0].reshape(28, 28), cmap='gray')
28
+
29
+ print("This is {:.0f}".format(y[0]))
30
+
31
+ import torch
32
+
33
+ from torch.utils.data import TensorDataset, DataLoader
34
+
35
+
36
+
37
+ from sklearn.model_selection import train_test_split
38
+
39
+ X_train, X_test, y_train, y_test = train_test_split(
40
+
41
+ X, y, test_size=1/7, random_state=0)
42
+
43
+
44
+
45
+ X_train = torch.Tensor(X_train)
46
+
47
+ X_test = torch.Tensor(X_test)
48
+
49
+ y_train = torch.LongTensor(y_train)
50
+
51
+ y_test = torch.LongTensor(y_test)
52
+
53
+
54
+
55
+ ds_train = TensorDataset(X_train, y_train)
56
+
57
+ ds_test = TensorDataset(X_test, y_test)
58
+
59
+
60
+
61
+ loader_train = DataLoader(ds_train, batch_size=64, shuffle=True)
62
+
63
+ loader_test = DataLoader(ds_test, batch_size=64, shuffle=False)
64
+
65
+
66
+
67
+ from torch import nn
68
+
69
+
70
+
71
+ model = nn.Sequential()
72
+
73
+ model.add_module('fc1', nn.Linear(28*28, 100))
74
+
75
+ model.add_module('relu1', nn.ReLU())
76
+
77
+ model.add_module('fc2', nn.Linear(100, 100))
78
+
79
+ model.add_module('relu2', nn.ReLU())
80
+
81
+ model.add_module('fc3', nn.Linear(100, 10))
82
+
83
+
84
+
85
+ print(model)
86
+
87
+ from torch import optim
88
+
89
+
90
+
91
+ loss_fn = nn.CrossEntropyLoss()
92
+
93
+
94
+
95
+ optimizer = optim.Adam(model.parameters(), lr=0.01)
96
+
97
+
98
+
99
+ from torch.autograd import Variable
100
+
101
+
102
+
103
+ def train(epoch):
104
+
105
+ model.train()
106
+
107
+ for data, target in loader_train:
108
+
109
+ data, target = Variable(data), Variable(target)
110
+
111
+ optimizer.zero_grad()
112
+
113
+ output = model(data)
114
+
115
+ loss = loss_fn(output, target)
116
+
117
+ loss.backward()
118
+
119
+ optimizer.step()
120
+
121
+ print("epoch{}:end\n".format(epoch))
122
+
123
+
124
+
125
+ def test():
126
+
127
+ model.eval()
128
+
129
+ correct = 0
130
+
131
+ for data, target in loader_test:
132
+
133
+ data, target = Variable(data), Variable(target)
134
+
135
+ output = model(data)
136
+
137
+ pred = output.data.max(1, keepdim=True)[1]
138
+
139
+ correct += pred.eq(target.data.view_as(pred)).sum()
140
+
141
+ data_num = len(loader_test.dataset)
142
+
143
+ print('\n answer: {}/{} ({:.0f}%)\n'.format(correct,data_num, 100. * correct / data_num))
144
+
145
+
146
+
147
+ for epoch in range(3):
148
+
149
+ train(epoch)
150
+
151
+
152
+
153
+ test()
154
+
155
+ import tensorflow as tf
156
+
157
+ img_r = tf.read_file("8.png")
158
+
159
+ read_image = tf.image.decode_image(img_r, channels=3)
160
+
161
+ data = Variable(read_image)
162
+
163
+ output = model(data)
164
+
165
+ pred = output.data.max(0, keepdim=True)[1]
166
+
167
+ print("I think {}".format(pred))
168
+
169
+ ```
170
+
171
+ error:variable data has o be a tensor, but got Tensor