トップページ > 授業のページ > コンピュータII > |
授業内容・実習課題等 |
標題 | 更新日 | |
---|---|---|
第14回(7/17)課題 | 7/17 Wed 15:06 | 1. 自分で作成した数字画像をニューラルネットワーク (chapter11) のプログラムで認識させ,プログラムの出力をホームディレクトリのファイル test?_tf.out に入れなさい。ここで ? は描いた数字である。 2. 教科書 p.304 の図に記された,入力 x ,重み W,バイアス b の値から,出力 y を計算するプログラム comp14.py を実習用コンピュータのホームディレクトリに作成して実行しなさい。Numpy による行列の演算を使うこと。 また,これらの重み W とバイアス b に対して,別の入力の値を与えて,出力を計算するコードを追加しなさい。 さらに,複数の入力に対する出力を計算するために,2つの入力を行列として用意することによって,1回の行列計算で2つの出力を計算するコードを comp14.py に加えるのが望ましい。 (複数の入力から行列の計算で出力を得るには,バイアス b も行列である必要があるが,Numpy の機能(ブロードキャスト)によって,必要に応じて b は適切なサイズの行列として扱われる) |
第13回(7/10) 課題(第11,12回の整理) | 7/10 Wed 16:12 | 1.【前回までの実習内容の整理】自身で書いた手書き数字の画像ファイルを,ホームディレクトリにファイル名 test?.png (ここで ? は自分で手書きした数字とする)として作成しなさい。 この数字画像をロジスティック回帰のプログラムで認識させ,プログラムの出力をホームディレクトリのファイル test?.out に入れなさい。 (実行方法は次のとおり。? には数字を入れる) cd /pub/comp2/sample/chapter10/ python3 lr_user.py ~/test?.png |tee ~/test?.out 2.【前回実習内容の整理と認識率計算】学習済みモデルを利用してテストだけを行うプログラム lr test.py と,MNIST の 60000 個の学習データで作成したモデルを利用して,MNIST の 10000 個の数字データの認識実験を行い,出力をホームディレクトリのファイル lr_test.out に保存しなさい。 さらに,自分で手書きしたのと同じ数字のみの認識率(正解率)を計算し,lr_test.out の最後の行に,式と認識率を追記しなさい。 (実行方法は次のとおり) [konno@as chapter10]$ python3 lr_test.py |tee ~/lr_test.out 認識を求める式と計算結果をファイルに追記するには vi を使えば良い。 |
第10回(6/19) 実習課題 | 6/19 Wed 16:04 |
第10回 プログラミング実習課題
|
第9回(6/12) 実習課題 | 6/12 Wed 17:45 | サイコロ振り1000回をシミュレートするのにかかった時間を,プログラムの開始時刻・サイコロの出目,終了時刻とともに,コマンドラインの引数で指定したファイルに書き込むプログラムを,ファイル名 comp9.py として作りなさい。 日時・時刻を得るには datetime モジュールのメソッド datetime.now() を使うことができるが,このメソッドが戻すオブジェクト(インスタンス)を文字列として扱うには,str() 関数を使ってオブジェクトを文字列に変換すればよい。整数を書き込む場合なども同様である。 また,できればファイルのオープンでは with を使うとよい。 さらに,キーボードから入力した回数だけサイコロ振りのシミュレートを行ったり,表示を見やすくするなど,改良を施すとなおよい。 <実行例> [konno@as comp2]$ python3 comp9.py test.txt [konno@as comp2]$ cat test.txt 2024-06-12 15:37:32.535803 664364356245544364633542 ... 153123456121244353436161655566523425 2024-06-12 15:37:32.540881 0:00:00.005078 |
第8回(6/5) 実習課題 | 6/5 Wed 16:00 | 自分で考えたクラス定義を含むプログラムを,ファイル名を comp8.py として実習用コンピュータ(の自分のホームディレクトリ)に作りなさい。ただし,以下の条件を満たすプログラムとすること。 - __init__ メソッドを使って,インスタンス生成時にデータ属性を設定する - インスタンスを生成し,データ属性やメソッドを使って何らかの処理をする - クラス属性を使う - クラスの継承を使う - 静的メソッドあるいはクラスメソッドを使う これらに限らず,今回学んだ機能をできるだけ使ってみてください。 |
第7回(5/29) 実習課題 | 5/29 Wed 17:53 | 自分で考えたクラス定義を含むプログラムを,ファイル名 comp7.py で実習用コンピュータに作りなさい。 クラス定義にはメソッドとクラス属性の定義を含めること。 また,__init__ メソッドを使ってインスタンス生成時にデータ属性を設定するプログラムとすること。 インスタンスを使って,何らかの処理をするプログラムとすること。 複数のインスタンスを生成すること。 |
第6回(5/22) 実習課題 | 5/22 Wed 17:45 | リスト,タプル,集合,辞書,のすべてを含むプログラムを,ファイル名 comp6.py で実習用コンピュータに作りなさい。 各データ構造に格納するデータは各自で考えることとするが,作成したデータに対する種々の操作を行った結果を表示するようなプログラムとすること。各データ構造について,その特徴がわかるような操作を必ず一つ以上含めること。 また,内包表記の利用も試しなさい。 |
第5回 (5/15) 実習課題 | 5/15 Wed 17:58 | 下記の指示に従い,comp5.py というファイル名で python プログラム(スクリプト)を作成し,実行しなさい。 1. 二次関数 a*x^2 + b*x + c の値を計算する関数 quad を定義しなさい。 ここで ^ はべき乗を表すものとする(^ は python で使える演算子ではない)。 関数 quad は 4 つの引数を持つこととし,最初の引数は x の値を受け取り,2番目以降の引数で a, b, c を受け取るものとする。 さらに,quad の引数 a, b, c はデフォルト値を持たせることによって,引数を一つだけ与えると x^2 の計算結果を返すこととする。 2. quad を以下のように呼び出して結果を表示する部分を加えなさい。実行結果が正しいことを確認しなさい。 quad(3) 9 quad(3,2) 18 quad(3,2,1) 21 quad(3,2,1,-1) 20 3. 関数 quad を使って,1, 2.5, 3, 4.5, 5 の各数の 2 乗を求めて表示するコードを加えなさい。 繰り返しの構文 (for) を使うこと。 さらに,map 関数とラムダ式を用いて関数を呼び出すコードも追加するとなおよい。 |
第4回 (5/1) 実習課題 | 5/1 Wed 15:31 | 1 から 99 までの自然数のうち,与えられた複数の性質を全て満たす数を列挙するプログラムを作りなさい。ただし,for と range 関数を用いた繰り返しと,論理演算子を使うプログラムとすること。 プログラムはファイル名を comp4.py として次回授業の前日までに作成すること。 数の性質は各自で考えること。また,その性質に応じた適切な範囲の自然数を扱うなど,プログラムを発展的に変更して構わない。 |
第3回実習課題 | 4/24 Wed 15:53 | 下記の動作をする python プログラムを comp3.py というファイル名で作成し,実行しなさい。下記の 1. から 4. は comp3.py に追記していくこと。 なお,インタープリタではない実行方法(スクリプト)において文字列等を表示するには,明示的に print 関数を使う必要がある。 また,下記の課題の下のカッコ ( ) 内はプログラムによって出力されるべきものである。 ================================================================================================== 1. 文字列 s を s = 'abcdefghijklmnopqrstuvwxyz' とする。文字列 s から 'student' という文字列を作り,それを str1 という名前で定義し,その内容を表示しなさい。 2. 次に,文字列 s から 'stu' と 'hak' の二つの文字列を作り,これらを要素とする(二つの要素からなる)リスト list1 を定義して,その内容を表示しなさい。 (['stu', 'hak']) 3. 更に,append メソッドを使って,list1 に 'hak' を追加し,list1 の内容を表示しなさい。 (['stu', 'hak', 'hak']) 4. 最後に,list1 の二つの 'hak' の間の要素として 'grad' を挿入した後,最後の要素を 'sap' に変更した上で,,list1 の内容を表示しなさい。 (['stu', 'hak', 'grad', 'sap']) ================================================================================================== |
第1回授業 | 4/10 Wed 15:21 | 1. 実習用コンピュータの利用 実習用コンピュータ(名前は as)にログインします。これは,コンピュータ・プログラミングなどで使っているコンピュータです。 2. Python の初歩 実習用コンピュータでは python3 というコマンドによって「Python インタープリタ」を起動できます。 quit() によって終了できます。 教科書 第2章 はじめての Python プログラミング 2.1 Python の基本の「き」 (p.22 - p.32) を読んで学習してください。 だだし,教科書でコマンドプロンプトに直接 python などと入力している箇所は,実習用コンピュータにログインしてから python3 などのコマンドを実行するように読み替えてください。 日本語を入力する箇所は,英語やローマ字に置き換えてください。 (p.26) Python のプログラムを作成してファイルに保存するにはエディタを使います。 例えば,教科書 p.26 の「ファイルに保存したプログラムを実行する方法」の test.py というファイルを実習用コンピュータで作るには vi などのエディタの利用が必要です。 実習用コンピュータでは vi や Emacs 等のエディタが利用可能で,vi の使い方の簡略な説明を含む資料はコンピュータプログラミングIのページに 「UNIX コマンドと vi エディタ」 として置いてありますので,必要に応じて参照してください。 (p. 30) pycodestyle は実習用コンピュータにインストール済みですので, pip や pip3 は実行しないでください(一般ユーザの権限ではできません)。 以上は次回授業の前日(4/16)までに行ってください。 |