python3で簡単なAutoencoderを作成したところAttributeErrorが発生する
ChainerでAutoEncoderを作成して、学習させようしたところ,
以下のようなエラーが発生しました。
Traceback (most recent call last):
File "MNIST_autoenc.py", line 30, in <module>
y = model(xs[batch:batch+128])
File "/usr/local/lib/python3.7/site-packages/chainer/link.py", line 293, in __call__
forward = self.forward # type: ignore
AttributeError: 'AutoEncoder' object has no attribute 'forward'
コードは以下の通りです。
修正箇所があればご教授お願いします。
import chainer
import chainer.links as L
import chainer.functions as F
import numpy as np
class AutoEncoder(chainer.Chain):
def __init__(self):
super(AutoEncoder, self).__init__(
l0 = L.Linear(784, 256),
l1 = L.Linear(256, 784)
)
def __call__(self, x):
h0 = F.relu(self.l0(x))
h1 = F.sigmoid(self.l1(h0))
return h5
train, test = chainer.datasets.get_mnist(ndim=1)
xs, ts = train._datasets
txs, tts = test._datasets
model = AutoEncoder()
model.to_cpu()
optimizer = chainer.optimizers.Adam()
optimizer.setup(model)
for _ in range(1000):
model.zerograds()
batch = np.random.randint(0, 60000-128)
y = model(xs[batch:batch+128])
acc = F.accuracy(y, rs[batch:batch+128])
loss = F.softmax_cross_entropy(y, t[batch:batch+128])
loss.backward()
optimizer.update()
if _ % 100 == 0:
print("epoch:%d --> accuracy:%.4f, loss:%.4f" % (_, acc.data, loss.data))
環境は
macbook pro 2015
python3 ver3.7.0
chainer ver6.0.0
numpy 1.17.0