2025年5月27日火曜日
2025年3月4日火曜日
sony nncのnnpファイルのサイズが大きい件
1TBのSSDがいっぱいになったので、調べてみたらsony nncのnnpファイルが最低4.5GB有って、結構、SSDを圧迫していることが分かった。
2025年2月3日月曜日
sony nnc :モデルの統計情報
2025年1月17日金曜日
SONY NNC:ネットワーク構造の自動最適化のアルゴリズム
【ネットワーク構造の自動最適化のアルゴリズムを選択するには】
Random:進化的計算を用いたネットワーク構造の自動探索を行います。、様々なネットワーク構造を試行する代わりに、最適化には時間がかかります。
Network Feature + Gaussian Process:ネットワーク特徴量とGaussian Processを使ったBayesian Optimizationを用いたネットワーク構造の自動探索を行います。Randomと比較して素早くより良いネットワークを発見できます。
【ネットワーク構造の自動最適化における最適化対象を選択するには】
Error:より誤差の少ないネットワークを探索します。演算量を考慮せず、とにかく高い性能のネットワークを探索したい場合に指定します。
Error and Calculation:より誤差が少なく、かつ演算量の少ないネットワークを探索します。
参考リンク:プロジェクト画面:詳細設定タブ(Global Config)の使い方
また、例えば、活性化関数などはUnitでひとまとめにして、探索を行うと、同じ活性化関数を各レイヤーに用いることができる。
2025年1月15日水曜日
2025年1月8日水曜日
sony nnc:To clear all parameters, call nn.clear_parameters().
Maxpoolingのサイズを変えて計算させてみたら、「To clear all parameters, call nn.clear_parameters().」との表示が出た。ダイヤグラムの上で右クリック「全てのパラメータファイルをクリア」しても問題は解決できなかった。
2024年11月14日木曜日
2024年11月13日水曜日
2024年11月12日火曜日
2024年11月10日日曜日
SONY NNCがMacでも利用できるになっている。
Windows版、Cloud版だけだったSony Neural Network Consoleですが、Window版に加えて、Linux版、Mac版が出ています。その一方で、12/25をもって、Cloud版はサービス終了とのことです。
2023年9月15日金曜日
2022年11月22日火曜日
2022年10月4日火曜日
混同行列の表示(SONY NNC)
SONY NNCで自作データを読み込んで、機械学習させていたが、評価タブで出力結果は表示されるものの、混同行列を表示させるされなかった。
調べたところ、ファイルの設定を以下のようにしておかないと混同行列が表示されないとのこと。
以下、SONYの小林さんの説明。
現状Windows版では、評価データに全てのクラスのデータが含まれていない条件ではConfusion Matrixを表示することができません。
正しくConfusion Matrixを表示するために、以下をご確認いただければと思います。
・データセットにおける変数yが0から始まる連続したIndexで与えられていること
・例えば20クラス分類であれば、0~19の値になっていること
・評価データに全てのクラスのデータが含まれていること
・20クラス分類の場合yの列に0~19の値全てが含まれていること
・ネットワークの出力クラス数が正しく設定されていること
・最後のAffineの出力ニューロン数がデフォルトの1,000クラスや100クラスから、実際に分類を行うクラス数(20クラス分類の場合20)に変更されていること
(以下は今回のケースでは該当しないかと思われますが、念のため記載しています)
・2値もしくは多値分類問題であること
・Confusion Matrixはその役割上2値もしくは多値分類問題でのみ表示することができ、回帰、画像生成などその他の問題では表示することはできません
・評価タブにおける評価結果として、評価対象の変数と、評価対象の変数に「'」がついた名前の変数が出力されていること
・例えば変数yの評価を行うのであればy'が出力されていること
・自分で設計したネットワークをExecutorのネットワークに指定している場合、最後のレイヤー名をy'にして変数y'が出力されるようにする必要があります
・2値分類の場合は評価結果の変数が1次元の確率、あるいは2次元の確率あるいはスコアであること
・例えばy'が1次元の確率か、2次元の確率あるいはスコアであること
・多値分類の場合は評価結果の変数がクラス数と同一であること
・例えば20クラス分類である場合はy'も20次元(y'__0~y'__19)であること
2019年8月8日木曜日
SONY NNC: ver1.50起動
2019年8月4日日曜日
SONY NNC:cli.py(バージョン1.40)
import sys
import warnings
warnings.filterwarnings("ignore", message="numpy.dtype size changed")
def _nnabla_version():
import nnabla
return 'Version {}'.format(nnabla.__version__) + \
', ' + \
'Build {}'.format(nnabla.__build_number__)
def version_command(args):
print(_nnabla_version())
return_value = None
def main():
global return_value
import six.moves._thread as thread
import threading
thread.stack_size(128 * 1024 * 1024)
sys.setrecursionlimit(0x3fffffff)
main_thread = threading.Thread(target=cli_main)
main_thread.start()
main_thread.join()
if not return_value:
sys.exit(-1)
def cli_main():
global return_value
return_value = False
import nnabla
parser = argparse.ArgumentParser(description='Command line interface ' +
'for NNabla({})'.format(_nnabla_version()))
parser.add_argument(
'-m', '--mpi', help='exec with mpi.', action='store_true')
subparsers = parser.add_subparsers()
from nnabla.utils.cli.train import add_train_command
add_train_command(subparsers)
from nnabla.utils.cli.forward import add_infer_command, add_forward_command
add_infer_command(subparsers)
add_forward_command(subparsers)
from nnabla.utils.cli.encode_decode_param import add_decode_param_command, add_encode_param_command
add_encode_param_command(subparsers)
add_decode_param_command(subparsers)
from nnabla.utils.cli.profile import add_profile_command
add_profile_command(subparsers)
from nnabla.utils.cli.conv_dataset import add_conv_dataset_command
add_conv_dataset_command(subparsers)
from nnabla.utils.cli.compare_with_cpu import add_compare_with_cpu_command
add_compare_with_cpu_command(subparsers)
from nnabla.utils.cli.create_image_classification_dataset import add_create_image_classification_dataset_command
add_create_image_classification_dataset_command(subparsers)
from nnabla.utils.cli.uploader import add_upload_command
add_upload_command(subparsers)
from nnabla.utils.cli.uploader import add_create_tar_command
add_create_tar_command(subparsers)
from nnabla.utils.cli.convert import add_convert_command
add_convert_command(subparsers)
from nnabla.utils.cli.func_info import add_function_info_command
add_function_info_command(subparsers)
from nnabla.utils.cli.plot import (
add_plot_series_command, add_plot_timer_command)
add_plot_series_command(subparsers)
add_plot_timer_command(subparsers)
from nnabla.utils.cli.draw_graph import add_draw_graph_command
add_draw_graph_command(subparsers)
# Version
subparser = subparsers.add_parser(
'version', help='Print version and build number.')
subparser.set_defaults(func=version_command)
print('NNabla command line interface (Version {}, Build {})'.format(
nnabla.__version__, nnabla.__build_number__))
args = parser.parse_args()
if 'func' not in args:
parser.print_help(sys.stderr)
return
if args.mpi:
from nnabla.utils.communicator_util import create_communicator
comm = create_communicator()
try:
return_value = args.func(args)
except:
import traceback
print(traceback.format_exc())
comm.abort()
else:
try:
return_value = args.func(args)
except:
import traceback
print(traceback.format_exc())
return_value = False
if __name__ == '__main__':
main()
SONY NNC:cli.py(バージョン1.50)
import argpars
import sys
import warnings
warnings.filterwarnings("ignore", message="numpy.dtype size changed")
def _nnabla_version():
import nnabla
import nnabla.utils.callback as callback
version_string = 'Version:{}, Build:{}'.format(nnabla.__version__,
nnabla.__build_number__)
callback_version_string = callback.get_callback_version()
if callback_version_string is not None:
version_string += ', Callback:{}'.format(callback_version_string)
return version_string
def version_command(args):
print(_nnabla_version())
return_value = None
def main():
global return_value
import six.moves._thread as thread
import threading
thread.stack_size(128 * 1024 * 1024)
sys.setrecursionlimit(0x3fffffff)
main_thread = threading.Thread(target=cli_main)
main_thread.start()
main_thread.join()
if not return_value:
sys.exit(-1)
def cli_main():
global return_value
return_value = False
parser = argparse.ArgumentParser(description='Command line interface ' +
'for NNabla({})'.format(_nnabla_version()))
parser.add_argument(
'-m', '--mpi', help='exec with mpi.', action='store_true')
subparsers = parser.add_subparsers()
import nnabla
from nnabla.utils.cli.train import add_train_command
add_train_command(subparsers)
from nnabla.utils.cli.forward import add_infer_command, add_forward_command
add_infer_command(subparsers)
add_forward_command(subparsers)
from nnabla.utils.cli.encode_decode_param import add_decode_param_command, add_encode_param_command
add_encode_param_command(subparsers)
add_decode_param_command(subparsers)
from nnabla.utils.cli.profile import add_profile_command
add_profile_command(subparsers)
from nnabla.utils.cli.conv_dataset import add_conv_dataset_command
add_conv_dataset_command(subparsers)
from nnabla.utils.cli.compare_with_cpu import add_compare_with_cpu_command
add_compare_with_cpu_command(subparsers)
from nnabla.utils.cli.create_image_classification_dataset import add_create_image_classification_dataset_command
add_create_image_classification_dataset_command(subparsers)
from nnabla.utils.cli.uploader import add_upload_command
add_upload_command(subparsers)
from nnabla.utils.cli.uploader import add_create_tar_command
add_create_tar_command(subparsers)
from nnabla.utils.cli.convert import add_convert_command
add_convert_command(subparsers)
from nnabla.utils.cli.func_info import add_function_info_command
add_function_info_command(subparsers)
from nnabla.utils.cli.plot import (
add_plot_series_command, add_plot_timer_command)
add_plot_series_command(subparsers)
add_plot_timer_command(subparsers)
from nnabla.utils.cli.draw_graph import add_draw_graph_command
add_draw_graph_command(subparsers)
# Version
subparser = subparsers.add_parser(
'version', help='Print version and build number.')
subparser.set_defaults(func=version_command)
print('NNabla command line interface ({})'.format(_nnabla_version()))
args = parser.parse_args()
if 'func' not in args:
parser.print_help(sys.stderr)
sys.exit(-1)
if args.mpi:
from nnabla.utils.communicator_util import create_communicator
comm = create_communicator()
try:
return_value = args.func(args)
except:
import traceback
print(traceback.format_exc())
comm.abort()
else:
try:
return_value = args.func(args)
except:
import traceback
print(traceback.format_exc())
return_value = False
sys.exit(-1)
if __name__ == '__main__':
main()
2019年8月1日木曜日
sony nnc version 1.50をインストールできない
Traceback (most recent call last):
File "C:\sony_nnc\neural_network_console_150\libs\scripts\plugin.py", line 5, in <module>
from nnabla import logger
File "C:\sony_nnc\neural_network_console_150\libs\nnabla\python\src\nnabla\__init__.py", line 31, in <module>
from .variable import Variable, Context
File "C:\sony_nnc\neural_network_console_150\libs\nnabla\python\src\nnabla\variable.py", line 17, in <module>
from ._variable import Context
File "_nd_array.pxd", line 64, in init nnabla._variable
File "__init__.pxd", line 918, in init nnabla._nd_array
ValueError: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 from C header, got 192 from PyObject
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "_init.pyx", line 56, in nnabla._init.finalize
SystemError: Parent module 'nnabla' not loaded, cannot perform relative import
visual stodioのバージョンを2017から2015に移してもだめだった。
2019年7月21日日曜日
SONY NNC:DATA SETの作り方
![]() | |||
| 図1 |
![]() |
| 図2 |
次に図3のような画面がでるので、下記を参考にファイルの場所等を指定する。
![]() |
| 図3 |
Source Dir
画像が置いてあるディレクトリ。そのなかに画像の種類ごとに分別してその種類ごとにフォルダに入れて置いておく。
Output Dir
ここに処理された画像とCSV形式の設定ファイルが置かれるので、空のディレクトリを作って指定してやる。
Shaping Mode(画像サイズを揃えるための処理)
Trimming:画像周辺の領域を削ってサイズを整える。
Padding:画像の空白部分にダミーの値(0)を入れてサイズを整える。
Resize: 画像を縦横に適当に引き延ばしてサイズを整える。
Output Color Ch
モノクロだったら1、カラー(RGB)だったら3。1 or 3はNNCのInputの設定をあわせる。
Output width Output height
適当な値を設定する。NNCのInputの設定をあわせる。
Shuffle the order of the data
画像の順番をランダムにするかどうか。通常はチェックを入れる。
Output file1 Output file2
Outputのファイル名(train fileとtest file)。デフォルトは両社の割合が100:0になっているが、通常は70:30 ~ 80:20 ぐらいにしておく。これはデータのうち、70%を使って学習し、残りの30%を使って検証するという意味。
2019年7月18日木曜日
SONY NNC:01_logistic_regression.sdcproj
人工ニューロンは
y=f(Σwx+b)と表現されるが、この()内がAffineであり、fの部分が活性化関数となる。
なので、おおまかな流れとしては判別対象が2つの場合は「Affine」「sigmoid」「binary cross entropy」となり、最終的な識別対象が2個以上の場合は「Affine」「softmax」「multicategory cross entropy」となる。
T.Dataset: データセットに含まれる変数のうち、このレイヤーの出力として期待する変数の変数名を指定します。
T.Generator:データセットの変わりに用いるGeneratorを指定。この場合、Noneなのでデータ生成を行わない。
T.GeneratorMultiplier:Generatorにより生成した値に対して掛ける係数を指定する。この場合、1となっている。(0に設定しても計算できていた。)





