前提・実現したいこと
pythonを用いて、自分で学習させたモデルを使用したWebアプリを作ろうとしています。
その時に以下のサイト、
https://aiacademy.jp/media/?p=382
を参考にしたのですが、サイトのソースコードでデバッグを行おうとした際、コマンドプロンプト上では同サイトの通り動作したものの、出力されたURLにchromeでアクセスしたところ、ERR_CONNECTION_REFUSEDエラーが出てしまいました。
IPアドレスの形式をとったURLの仕組みがよく分からず、調べてみたところ、「複数のドメインが一つのWebサーバに紐づけられている」可能性があると分かり、そこが原因なのではないかと疑っています。
このことを確かめる方法はありますか?
コマンドプロンプトで出力された文
* Serving Flask app 'app' (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
実行したapp.py
from flask import Flask, render_template, request, flash from wtforms import Form, FloatField, SubmitField, validators, ValidationError import numpy as np # from sklearn.externals import joblib import joblib # 学習済みモデルを読み込み利用します def predict(parameters): # ニューラルネットワークのモデルを読み込み model = joblib.load('./nn.pkl') params = parameters.reshape(1,-1) pred = model.predict(params) return pred # ラベルからIrisの名前を取得します def getName(label): print(label) if label == 0: return "Iris Setosa" elif label == 1: return "Iris Versicolor" elif label == 2: return "Iris Virginica" else: return "Error" app = Flask(__name__) app.config.from_object(__name__) app.config['SECRET_KEY'] = 'zJe09C5c3tMf5FnNL09C5d6SAzZoY' # 公式サイト # http://wtforms.simplecodes.com/docs/0.6/fields.html # Flaskとwtformsを使い、index.html側で表示させるフォームを構築します。 class IrisForm(Form): SepalLength = FloatField("Sepal Length(cm)(蕚の長さ)", [validators.InputRequired("この項目は入力必須です"), validators.NumberRange(min=0, max=10)]) SepalWidth = FloatField("Sepal Width(cm)(蕚の幅)", [validators.InputRequired("この項目は入力必須です"), validators.NumberRange(min=0, max=10)]) PetalLength = FloatField("Petal length(cm)(花弁の長さ)", [validators.InputRequired("この項目は入力必須です"), validators.NumberRange(min=0, max=10)]) PetalWidth = FloatField("petal Width(cm)(花弁の幅)", [validators.InputRequired("この項目は入力必須です"), validators.NumberRange(min=0, max=10)]) # html側で表示するsubmitボタンの表示 submit = SubmitField("判定") @app.route('/', methods = ['GET', 'POST']) def predicts(): form = IrisForm(request.form) if request.method == 'POST': if form.validate() == False: flash("全て入力する必要があります。") return render_template('index.html', form=form) else: SepalLength = float(request.form["SepalLength"]) SepalWidth = float(request.form["SepalWidth"]) PetalLength = float(request.form["PetalLength"]) PetalWidth = float(request.form["PetalWidth"]) x = np.array([SepalLength, SepalWidth, PetalLength, PetalWidth]) pred = predict(x) irisName = getName(pred) return render_template('result.html', irisName=irisName) elif request.method == 'GET': return render_template('index.html', form=form) if __name__ == "__main__": app.run()
試したこと
最初はchrome自体の問題かと思い、再ダウンロードしましたが、同じ結果でした。
また、chrome以外のブラウザ(IE,Edge,Opera)でも、エラーが発生しました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。