1Answer
Kerasでは様々なレイヤーが定義されており,もちろんCNNで使われるようなConvolutionに関するレイヤも用意されております.
「CNNを使わずに」とのことですが,Convolutionレイヤを使わないネットワークを作りたいのでしょうか(すみませんがあまり質問の意図がよくわからないです.Kerasと並んでCNNについて記述されていることから,CNNをツールやライブラリの一種だと思ってらしているのでしょうか).
Kerasでは自身で多様にモデルを定義できるので,例えば単純な全層結合モデルも作成できますし,近年多様に定義されている複雑なモデルも定義できます.
具体的には何を解決するようなモデルを希望しているのでしょうか.用途によってはそれこそConvolutionレイヤを使用したNN(すなわちCNN)になりますし,そうでないにしても時系列が絡むのであればRecurrentレイヤの使用(RNN),さらにはデータのばらつきや過学習に対応するための正規化や正則化のレイヤを使用するなど多様に実装が可能です.
また,Kerasだけでやりたいとのことですが,基本的には他のライブラリと併用して,入出力データの加工をはじめ,モデルの動作を可視化するようなビジュアライザ,ハイパーパラメータのチューナー等のさまざまなライブラリを使って正しくモデルの評価・最適化を行なってはじめて「機械学習」と呼べるタスクになると思います.
終わりに
「CNNを使用せずにkerasだけで機械学習を出来ますか?」
という質問の意味が,Convolutionレイヤーを使わずに任意のタスクを学習できるかどうかという意味であればYesですが,それに加えてKerasだけで実装できるかと言われればおおよそNoです(機械学習ではKerasでモデルを作って終わりでは無く,上でも述べたようにやることがたくさんあります.それらをライブラリの頼りなしに実装するのは困難です).上の質問を言い換えると「カレーを使用せずに料理本だけで料理が出来ますか?」となります.料理には包丁などのツールや食料をはじめとする,さまざまな材料が必要になります.料理本だけで料理ができません.紙の料理本であれば紙で指を切るように食材を切り,紙同士の摩擦を使って火を起こして料理をすることはできるかもしれませんが,現実的ではありません.それと同じです.
モデルの実装に話を絞り,どういう問題を解決したいのか示していただけたら,こちらからも提案ができるようになります.
よくあるIrisの分類であれば単純な全層結合モデルを提案しますし,自然言語処理であればAttentionやBERTなどを提案できますし,画像認識であればLeNetをはじめResNetやViTなどのモデルを提案ができます.
CNNというのはあくまでNNのカテゴリの1つに過ぎませんのでそちらを踏まえた上で何をしたいか教えていただけますと幸いです.
追記
質問者様の過去の質問を見たところ,OpenCVを用いた画像処理をやっていらしているようでしたので,その関連でCNNという単語が出てきたとお察しします.
その上でConvolutionを行わない画像処理のタスクをこなすモデルと,それをKerasで実装したものを引っ張ってきました.
- Self-Attention Network: https://github.com/CyberZHG/keras-self-attention 1
- Vision Transormer: https://keras.io/examples/vision/image_classification_with_vision_transformer/
- MLP-Mixer: https://github.com/leondgarse/keras_mlp
この追記の内容は,「Convolutionを使用せずにKerasで実装した画像処理のモデルはどのようになりますか?」という質問の意図であれば正しい回答になっていると思います.料理で言えば「カレールーを使用せずに料理本を見て作った辛い料理はどのようになりますか?」とかでしょうか.Convolutionを使ったNNはCNNですしカレールーを使った料理はカレーですね.カレールーを使わない辛い料理で言えばキムチなら唐辛子とか使っちゃえば良さげですし,Convolutionを使わない画像処理モデルではSelf-AttentionやTransformer,MLP-Mixierを使っていますね.
-
正しくは色方向で重み付きの畳み込みを行っています. ↩